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

-- 左连接两个表
 
-- 把二表的时间附上来
select 
p2.video_id,
-- 这一步是关键 计算各个视频的完播率
round(sum(if((p2.watch_time-p2.duration) >=0,1,0))/count(p2.video_id),3) avg_comp_play_rate
-- count(p2.watch_time>=p2.duration)	avg_comp_play_rate
from
(SELECT
	uid,
	video_id,
	end_time-start_time watch_time,
	duration
	-- 表1把两个表左连接起来了
FROM
	( SELECT a.*, b.duration FROM tb_user_video_log a LEFT JOIN tb_video_info b ON a.video_id = b.video_id ) p1
	-- p2 挑选出来了2021年的视频
WHERE substr(start_time,1,4)='2021')p2
-- 按视频编号分组
GROUP BY p2.video_id
-- 按完播率降序排列
ORDER BY avg_comp_play_rate DESC;

全部评论

相关推荐

2025-12-31 18:42
复旦大学 Java
点赞 评论 收藏
分享
2025-11-12 14:30
已编辑
广东科技学院 前端工程师
迷茫的小刺猬在迎接o...:前端岗位越来越少了,中小厂也更倾向全栈了,更不需要初级或者实习。可能就大厂才会有一些岗位,但是很看学历。
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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