题解 | 近一个月发布的视频中热度最高的top3视频

近一个月发布的视频中热度最高的top3视频

https://www.nowcoder.com/practice/0226c7b2541c41e59c3b8aec588b09ff

SELECT
    video_id,
    ROUND(
        (
            100 * play_complete_rate + 5 * sum_like + 3 * sum_comment + 2 * sum_retweet
        ) / (1 + no_play_days),
        0
    ) AS hot_index
FROM
    (
        SELECT
            video_id,
            SUM(
                IF(
                    TIMESTAMPDIFF(SECOND, start_time, end_time) >= duration,
                    1,
                    0
                )
            ) / COUNT(*) AS play_complete_rate,
            SUM(if_like) AS sum_like,
            SUM(IF(comment_id IS NULL, 0, 1)) AS sum_comment,
            SUM(if_retweet) AS sum_retweet,
            MIN(
                DATEDIFF(
                    (
                        SELECT
                            DATE(MAX(end_time))
                        FROM
                            tb_user_video_log
                    ),
                    DATE(end_time)
                )
            ) AS no_play_days
        FROM
            tb_video_info
            JOIN tb_user_video_log USING (video_id)
        WHERE
            DATE(release_time) -- 近一个月发布的
            BETWEEN (
                SELECT
                    DATE_SUB(DATE(MAX(end_time)), INTERVAL 29 DAY)
                FROM
                    tb_user_video_log
            ) -- 09-04 27天
            AND (
                SELECT
                    DATE(MAX(end_time))
                FROM
                    tb_user_video_log
            ) -- 10-03 3天
        GROUP BY
            video_id
    ) AS t1
ORDER BY
    hot_index DESC
LIMIT
    3

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务