[英]summation and grouping multiple columns in mysql
我在MYSQL中有一張twitter數據表,其中is_retweet列,is_reply列由二進制值組成,其中1 =是,0 =否。 如果某用戶一天轉發了多次推文,則該用戶在該天的轉發推文中將有多行。
account_id, datetime, user_screenname, is_retweet, is_reply,followers_count
'9', '2008-06-11 20:06:35','Access2', '1', '0', '811'
'9', '2008-06-11 23:06:35','Access2', '1', '1', '812'
'9', '2008-06-12 20:01:21','Access2', '0', '1', '813'
'7', '2008-06-11 17:01:00','actingparty', '1', '1', '2000'
我應該如何構造我的SQL視圖以得到如下表所示的結果,在該表中我可以按用戶名總結任意一天的轉發和回復? IE瀏覽器我想做的是:
-對於任何一天的用戶名,轉發,回復和最高關注者總數是多少?
account_id, date, user_screenname, sum_retweet, sum_reply, followers_count
'9', '2008-06-11', 'Access2', '2', '0', '812'
'9', '2008-06-12', 'Access2', '0', '1', '813'
這是我的SQL代碼:
CREATE VIEW `tweet_sum` AS
select
`tweets`.`account_id` AS `account_id`,
`tweets`.`user_screenname` AS `user_screenname`,
CAST(`tweets`.`datetime` as date) AS `period`,
MAX(`tweets`.`followers_count`) AS `followers_count`,
SUM(`tweets`.`is_reply`) AS `sum_reply`,
SUM(`tweets`.`is_retweet`) AS `sum_retweet`,
from
`tweets`
group by cast(`tweets`.`datetime` as date)
但是我的數據似乎與我想要的不匹配,因為sql正在匯總當天所有用戶的轉發。 如何將日期和用戶名分組?
謝謝! Ĵ
** * ** * 編輯 * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ***
我想擴大這個問題。 假設我還有一列Reach(等於followers_count乘以大於零的列數(is_retweet,is_reply)。)例如,在下面的輸出表中,sum_retweet和sum_reply列均大於零2008年6月11日,因此我需要對覆蓋率列采用followers_count * 2 = 1624。
我如何構造我的sql代碼來做到這一點?
account_id, date, user_screenname, sum_retweet, sum_reply, followers_count, **Reach**
'9', '2008-06-11', 'Access2', '2', '1', '812', '1624'
'9', '2008-06-12', 'Access2', '0', '1', '813', '813'
只需將GROUP BY更改為
group by
`tweets`.`account_id`,
`tweets`.`user_screenname`,
cast(`tweets`.`datetime` as date)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.