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

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

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

select b.tag,
CONCAT(round(avg(if(timestampdiff(second,start_time,end_time)>duration,1,timestampdiff(second,start_time,end_time)/duration))*100,2),'%')
#CONCAT(round(sum(if(timestampdiff(second,start_time,end_time)>duration,1,timestampdiff(second,start_time,end_time)/duration))*100/count(start_time),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 b.tag
having avg_play_progress>60
order by avg_play_progress desc

易错点:平均播放进度大于60%,这个是个巨大的易错点,那就是0.6和60%不能进行比较的,需要乘以100,使用concat加上百分号,就可以和60进行比较了。开始有个疑惑,就是到底要不要用右连接,因为视频没有播放过,那不就是播放率为0,如果是使用left或者inner就不用担心会存在0的情况。但是题目的源数据应该是没有这种情况出现,所以用那种连接都可以。

解题思路:计算各类视频的平均播放进度,将进度大于60%的类别输出,即要进行group by分组,再进行having筛选,给出一个平均播放进度公式。平均播放进度就是每个视频的播放进度/所有视频个数(包括重复的视频)

全部评论

相关推荐

被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务