题解 | #每类视频近一个月的转发量/率#
每类视频近一个月的转发量/率
https://www.nowcoder.com/practice/a78cf92c11e0421abf93762d25c3bfad
select tag,sum(if_retweet)as retweet_cnt, round(sum(if_retweet)/count(*),3) as retweet_rate from tb_user_video_log as a left join tb_video_info as b on a.video_id=b.video_id where datediff (date ((select max(start_time)from tb_user_video_log)), date(a.start_time) )<=29 group by tag order by retweet_rate desc
按类别分组:group by tag
限制:where datediff (date ((select max(start_time)from tb_user_video_log)), date(a.start_time) )<=29
连接:左连接
转发率=转发量/播放量= sum(if_retweet) / count(*)
保留小数点后三位:round( ... ,3)
按转发率降序排序:order by retweet_rate
注:as的使用
解释限制:where datediff (date ((select max(start_time)from tb_user_video_log)), date(a.start_time) )<=29
datediff函数:计算两个日期之间的天数差异
date:是表明将查询到的start_time
转换为日期格式,只比较日期,不比较时间
select max(start_time)from tb_user_video_log:这部分子查询提取了表tb_user_video_log
中start_time
字段的最大值,即最新的start_time
date(a.start_time):是当前表中的所有日期,并将其转化为日期格式
datediff (date ((select max(start_time)from tb_user_video_log)), date(a.start_time) ):计算最新的start_time
与当前记录的start_time
之间的天数差。