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

各个视频的平均完播率

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

各个视频的平均完播率

明确题意:

计算2021年里有播放记录的每个视频的完播率,并按完播率降序排序


问题分解:

  • 关联用户-视频互动记录和短视频信息表:JOIN tb_video_info USING(video_id);
  • 筛选2021年的记录:WHERE YEAR(start_time)=2021
  • 按视频id分组:GROUP BY video_id
  • 计算每条播放记录是否完成播放:IF(TIMESTAMPDIFF(SECOND, start_time, end_time)>=duration, 1, 0)
  • 计算完播率,完成播放为1,未完成播放为0,取平均即为完播率AVG()
  • 保留3位小数:ROUND(x, 3)

细节问题:

  • 表头重命名:as
  • 按完播率倒序排序:ORDER BY avg_comp_play_rate DESC;

完整代码:

SELECT video_id, ROUND(AVG(IF(
        TIMESTAMPDIFF(SECOND, start_time, end_time)>=duration, 1, 0
    )), 3) as avg_comp_play_rate
FROM tb_user_video_log
JOIN tb_video_info USING(video_id)
WHERE YEAR(start_time)=2021
GROUP BY video_id
ORDER BY avg_comp_play_rate DESC;
SQL大厂真题 文章被收录于专栏

大厂真题手把手教你怎么解~

全部评论
个人觉得这个AVG函数用的很灵性
1 回复 分享
发布于 2022-05-07 11:53
大佬,请收下我做您的徒弟吧,我想学习更多的知识,提高自己的思维判断能力
点赞 回复 分享
发布于 2024-04-09 20:12 河南
还在想平均完播率和完播率是什么区别,你这个avg就给完美解释了,牛
点赞 回复 分享
发布于 2022-11-10 14:17 广东
AVG用的真是妙啊!
点赞 回复 分享
发布于 2022-08-18 17:39 北京

相关推荐

评论
76
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务