每类视频近一个月的转发量/率
明确题意:
计算每类视频在有用户互动的最近一个月(按包含当天在内的近30天算)中的转发量和转发率。结果按转发率降序排序
问题分解:
- 关联用户-视频互动记录和短视频信息表:JOIN tb_video_info USING(video_id);
- 筛选最近30天的记录:
- 找到今天的日期:MAX(DATE(start_time)
- 往过去推移30天:DATE_SUB(MAX(DATE(start_time)), INTERVAL 30 DAY)
- 筛选最近的:WHERE DATE(start_time) > (SELECT DATE_SUB(MAX(DATE(start_time)), INTERVAL 30 DAY) FROM tb_user_video_log)
- 按视频类别分组:GROUP BY tag
- 计算每个类别的转发量:SUM(if_retweet)
- 计算每个类别的转发率(转发率=转发量÷播放量):SUM(if_retweet) / COUNT(1)
- 保留3位小数:ROUND(x, 3)
细节问题:
- 表头重命名:as
- 按转发率倒序排序:ORDER BY retweet_rate DESC;
完整代码:
SELECT tag, SUM(if_retweet) as retweet_cnt,
ROUND(SUM(if_retweet) / COUNT(1), 3) as retweet_rate
FROM tb_user_video_log
JOIN tb_video_info USING(video_id)
WHERE DATE(start_time) > (
SELECT DATE_SUB(MAX(DATE(start_time)), INTERVAL 30 DAY)
FROM tb_user_video_log
)
GROUP BY tag
ORDER BY retweet_rate DESC;