题解 | #平均播放进度大于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这一条件,所以使用子查询进行判断,在主查询中再加上%。

感想是大厂的题不能怕麻烦 、、

全部评论

相关推荐

点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务