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

各个视频的平均完播率

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

select b.video_id,
round((sum(case when (timestampdiff(second,a.start_time,a.end_time))>=b.duration then 1 else 0 end)/count(1)),3) as avg_comp_play_rate
from tb_video_info b
left join tb_user_video_log a
on b.video_id=a.video_id
where year(start_time)=2021
group by b.video_id
order by avg_comp_play_rate DESC

时间相加减可以用 timestampdiff(天/分/秒等,时间1,时间2)
case when 判断 then 如果成立返回的值 else 如果不成立返回的值 en d
count(1)就和count(*)的用法一样
为什么要用左连接,我的理解是因为03视频在21年没有播放,导出的可能没有03的数据,所有用左连接是保证不管表a里有没有播放记录,都要返回表b里所有的编号数据

#解题#
全部评论

相关推荐

废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 10:46
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务