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

各个视频的平均完播率

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里所有的编号数据

#解题#
全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
_mos_:忍耐王
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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