问题:计算2021年里有播放记录的每个视频的完播率(结果保留三位小数),并按完播率降序排序
注:视频完播率是指完成播放次数占总播放次数的比例。简单起见,结束观看时间与开始播放时间的差>=视频时长时,视为完成播放。
思路:
1、条件是2021年用year(start_time)截取年;
2、每个视频需要按照视频id分组统计group by video_id;
3、视频完播率=视频完播总次数/总播放次数=sum(if(end_time-start_time>=duration,1,0))/count(start_time);
4、保留三位小数用round(视频完播率,3);
5、视频完播率按降序排序用order by 视频完播率 desc;
6、此问题需求用户-视频互动表tb_user_video_log为主表需要显示全,所以用left jion 。
SELECT a.video_id ,
       round(sum(if(end_time - start_time >= duration, 1, 0))/count(start_time ),3) as 视频完播率
FROM tb_user_video_log a
LEFT JOIN tb_video_info b
on a.video_id = b. video_id
WHERE year(start_time) = 2021
GROUP BY a.video_id
ORDER BY 视频完播率 DESC;