题解 | #平均播放进度大于60%的视频类别#

平均播放进度大于60%的视频类别

https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef

select tag, 
concat(round(avg(if( 
    timestampdiff(second,start_time, end_time)>duration,1,
timestampdiff(second,start_time,end_time)/ duration
)) *100,2),'%') as avg_play_progress

from tb_user_video_log  a 
join tb_video_info b 
on a.video_id=b.video_id
group by tag 
having substr(avg_play_progress,1,4)>60 
order by avg_play_progress DESC

这里新加的函数为:timestampdiff 函数,用来计算两个日期的差值,第一个是unit,第二和第三是开始时间和截止时间

if 时间差值大于视频总时长,取1,如果小于则算出时间差值/总时长得到 总共的看视频完成率的数据, 平均一下,保留两位小数,concat 把百分号连起来, 两个表是join链接,having是可以聚合函数筛选,可以将上面已经分组的来进行筛选,可以用select里的别名, 最后avg_play_progress 降序

全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务