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

各个视频的平均完播率

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

select a.video_id, 
round(sum(if(a.end_time-a.start_time>=b.duration,1,0))/count(a.start_time),3) as avg_comp_play_rate
from tb_user_video_log a join tb_video_info b 
on a.video_id=b.video_id
where year(a.start_time)='2021' and year(a.end_time)='2021'
group by a.video_id
order by avg_comp_play_rate desc

首先明白要计算的内容,前提条件2021年的,有播放记录的完播率,2021年可以通过where进行筛选,但是其实我有疑惑,2020年开始,2021年结束的视频是怎么算?2021年开始,2022年结束的怎么算?这里是默认开始和结束播放都是2021年的,有播放记录,其实在用户视频互动表里的都是有播放记录的,所以和短视频信息表进行连接的时候,使用left join或者join都可以,这样连接出来的不会有空值,也都会有播放记录。然后计算每个视频的完播率,首先是要对视频分组group by,然后计算这个视频总播放次数,使用count就行,count(起始时间),完成播放次数是先判断每次的播放记录是不是完成播放,是计1,不是0,使用sumn求和,再和总播放次数相除,就得出了播放率

全部评论

相关推荐

03-21 08:46
已编辑
门头沟学院 C++
一个什么都不会的学生:当你有硕士学历的时候HR会说就是比本科生强
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务