题解 | #各个视频的平均完播率#
各个视频的平均完播率
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;
思路:
- 表连接
- 条件筛选
- 分组
- 新增列-是否完播,然后求平均完播率
- 先用timestampdiff()求时间,单位与duration保持一致
- 用if函数判断,完播的记为1,未完播的记为0,作为新增列
- 对该列按分组求平均,并取小数后3位
- 按平均完播率降序排
- select展示
SQL大厂面试真题全解 文章被收录于专栏
完整的代码+解题思路

