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

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

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

SELECT
    tag,
    CONCAT (t1.avg_play_progress, "%")
from
    (
        select
            tag,
            round(
                avg(
                    if (
                        timestampdiff (second, u.start_time, u.end_time) >= v.duration,
                        1,
                        timestampdiff (SECOND, u.start_time, u.end_time) / v.duration
                    )
                ) * 100,
                2
            ) as avg_play_progress
        from
            tb_user_video_log u
            LEFT JOIN tb_video_info v on u.video_id = v.video_id
        GROUP BY
            v.tag
        HAVING
            avg_play_progress >60
        ORDER BY
            avg_play_progress desc
    ) t1;

#第一步:from 连接两个表,以video_id连接

#第二步:group by :按照tag进行聚合

#第二步:select:计算平均完播率,先计算每个视频的完播率,如果时长大于duration的直接赋值为1,如果小于,那么直接处于duration,最后计算每个tag的平均

#第三步:对完播率进行乘以100,保证后面的百分位数输出准确

#第四步:HAVING挑选出完播率大于60的,进行输出

#第五步:排序按照播放进度降序排序

#第六步:从上面的查询中,使用concat函数,连接两个数值类型,进行输出

全部评论

相关推荐

10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务