题解 | #平均播放进度大于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 降序