我在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总结了当天的所有用户转推。我如何按天和用户名对其进行分组?
谢谢! Ĵ
的 的 ** * ** * 修改的 * ** * ** * ** * ** * < / EM> ** * ** * ** * ** * ** * < / EM> ** * ** * ***
我想提出这个问题。假设我还有一个列Reach(等于followers_count乘以大于零的列数(is_retweet,is_reply)。) 例如,在下面的输出表中,2008-06-11的sum_retweet和sum_reply列都大于零,因此我需要对达到列采用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'
答案 0 :(得分:0)
只需将GROUP BY更改为
group by
`tweets`.`account_id`,
`tweets`.`user_screenname`,
cast(`tweets`.`datetime` as date)