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

各个视频的平均完播率

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

select
log.video_id video_id
,round(avg(if(timestampdiff(second, start_time, end_time) >= duration, 1, 0)), 3) avg_comp_play_rate
from tb_user_video_log log
join tb_video_info info
on log.video_id = info.video_id
where year(start_time) = 2021
group by 1
order by 2 desc;

思路:

  1. 表连接
  2. 条件筛选
  3. 分组
  4. 新增列-是否完播,然后求平均完播率
  5. 先用timestampdiff()求时间,单位与duration保持一致
  6. 用if函数判断,完播的记为1,未完播的记为0,作为新增列
  7. 对该列按分组求平均,并取小数后3位
  8. 按平均完播率降序排
  9. select展示
SQL大厂面试真题全解 文章被收录于专栏

完整的代码+解题思路

全部评论

相关推荐

09-22 22:22
中山大学 Java
乌鱼子萨奇:羡慕你啊,直接转正了,都不用经历秋招的炼狱,但是你少经历了很多痛苦的事情啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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