题解 | #平均播放进度大于60%的视频类别#
平均播放进度大于60%的视频类别
https://www.nowcoder.com/practice/c60242566ad94bc29959de0cdc6d95ef
SELECT tag, CONCAT(avg_play_progress, '%') AS avg_progress FROM ( SELECT tag, 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 JOIN tb_video_info USING(video_id) GROUP BY tag )t1 WHERE t1.avg_play_progress > 60 ORDER BY avg_play_progress DESC
几个需要注意的点,一是计算时间秒差使用的函数TIMESTAMPDIFF(SECOND, start_time, end_time)。二是可能会有播放时间大于视频时长的情况出现,需使用IF函数进行处理。三是百分号只能通过CONCAT加上,但加上之后数据会变为字符串形式,无法判断>60这一条件,所以使用子查询进行判断,在主查询中再加上%。
感想是大厂的题不能怕麻烦 、、