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

各个视频的平均完播率

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值出现的次数。

全部评论

相关推荐

求面试求offer啊啊啊啊:1600一个月?
点赞 评论 收藏
分享
路过的咸蛋超人也想拿offer:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-21 00:27
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务