题解 | 每类视频近一个月的转发量/率
select v.tag, sum(u.if_retweet) retweet_cnt, round(sum(u.if_retweet)/count(u.start_time), 3) retweet_rate from tb_user_video_log u join tb_video_info v on u.video_id = v.video_id where datediff(date((select max(start_time) from tb_user_video_log)),date(start_time))<=29 group by v.tag order by round(sum(u.if_retweet)/count(u.start_time), 3) desc
select max(start_time) from tb_user_video_log:这个子查询从 tb_user_video_log 表中选择最大的 start_time 值,即最新的视频开始观看时间。
date((...)):这个函数将日期时间值转换为日期值,即去掉时间部分,只保留日期。
datediff(date((select max(start_time) from tb_user_video_log)), date(start_time)):datediff 函数计算两个日期之间的天数差。在这里,它计算从最新的视频开始观看时间到每个记录的 start_time(即每个视频的开始观看时间)之间的天数差。
<=29:这个条件确保只选择在过去30天内开始观看的视频记录。