题解 | 平均播放进度大于60%的视频类别
平均播放进度大于60%的视频类别
https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
-- 需求:计算各类视频的平均播放进度,将进度大于60%的类别输出。 对需求进行拆解如下: -- 1、以互动表为左表,使用left join以video_id为关联条件,匹配右表中每个视频对应的类别和播放时长; -- 2、计算播放进度:①使用timestampdiff函数获取每个视频开始时间和结束时间之间对应的秒数;②再通过if函数将实际播放时长与时长进行判断,如果实际播放时长>时长,就记录为1,否则记录为0;③使用avg计算对应的播放进度;④使用round函数与concat函数将结果呈现为百分比形式 -- 3、使用group by对类别进行分组统计 -- 4、使用having语句,筛选出播放进度大于60%的内容 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 t1 left join tb_video_info t2 on t1.video_id = t2.video_id group by tag having round(avg(if(timestampdiff(second,start_time,end_time)>duration,1,timestampdiff(second,start_time,end_time)/duration)),2) > 0.6000 order by avg_play_progress desc