一、题目解读
没啥难的知识点,这题的难点在题目理解上了。“统计在有用户互动的最近一个月”就这句话真是理解了太久了。。。裂开。
- 坑1:日期之间的差是29天
- 坑2:max(star_time)是所有日期中的最大值,不按照类目做聚类。
二、解题步骤。
1)统计在有用户互动的最近一个月,(按包含当天在内的近30天算,比如10月31日的近30天为10.2~10.31之间的数据)
- 由解释可知,转存日期为最新日期
MAX(start_time)
- 最近1个月按照30天来算即日期,从上面括号里的内容可知两个日子差29天
DATEDIFF(MAX(start_time),start_time)<=29
- MAX(start_time) 是所有数据的最大值,即为
DATEDIFF((SELECT MAX(start_time) FROM tb_user_video_log),start_time)<=29
- 转发量=每一类视频转发数量求和
- SUM(if_retweet) #转发量
- COUNT(start_time) #播放量
- SUM(if_retweet)/COUNT(start_time) #转发率
SELECT SUM(if_retweet) retweet_cut,COUNT(start_time), ROUND(SUM(if_retweet)/COUNT(start_time),3) retweet_rate FROM tb_user_video_log GROUP BY video_id;
SELECT tag,SUM(if_retweet) retweet_cut,ROUND(SUM(if_retweet)/COUNT(start_time),3) retweet_rate FROM tb_user_video_log a LEFT JOIN tb_video_info b ON a.video_id=b.video_id WHERE DATEDIFF((SELECT MAX(start_time) FROM tb_user_video_log),start_time)<=29 #这里最浪费时间,从当日开始往前推30天,30天内的数据 GROUP BY tag ORDER BY retweet_rate DESC;