题解 | #各个视频的平均完播率#

各个视频的平均完播率

https://www.nowcoder.com/practice/96263162f69a48df9d84a93c71045753


SELECT tb_user_video_log.video_id, 
ROUND(COUNT(  IF((end_time - start_time) >= duration, 1, null)   ) / COUNT(1) , 3)
AS avg_comp_play_rate
FROM tb_user_video_log, tb_video_info
WHERE tb_user_video_log.video_id = tb_video_info.video_id AND 
YEAR(start_time) = 2021 -- 过滤出2021年的数据
GROUP BY video_id ORDER BY avg_comp_play_rate DESC; -- 按照完播量降序排序

这是我在`SQL大厂面试真题`专题解决的第一道题目,真的很开心。

计算每个视频的完播率,需要通过`video_id`连接两张表,并以`video_id`进行分组聚合操作。

统计每个视频的播放数使用 COUNT(1)即可,要统计完成播放的记录,可以先使用IF()函数判断每条记录是否完成播放,如果完成播放就返回1,否则返回null, 随后使用COUNT()统计1出现的次数,即为完播记录数。注意COUNT()函数会统计非NULL值出现的次数。

全部评论

相关推荐

俺要找实习:第一次找实习,我还以为都苛刻成这样了呢
点赞 评论 收藏
分享
01-17 12:35
吉首大学 Java
秋招之BrianGriffin:自己的工作自己做!😡
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务