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

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

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

WITH
-- 第一步:动态计算全局最近播放日期T
global_T AS (
    SELECT MAX(DATE(end_time)) AS T FROM tb_user_video_log
),
latest_info AS (
    SELECT
        tvi.video_id,
        COUNT(tuvi.start_time) AS play_cnt,
        SUM(CASE WHEN TIMESTAMPDIFF(SECOND, tuvi.start_time, tuvi.end_time) >= tvi.duration THEN 1 ELSE 0 END) AS finish_video_cnt,
        SUM(tuvi.if_like) AS like_cnt,
        COUNT(tuvi.comment_id) AS comment_cnt,
        SUM(tuvi.if_retweet) AS retweet_cnt,
        -- 直接计算新鲜度:T - 最后播放日期
        DATEDIFF((SELECT T FROM global_T), MAX(DATE(tuvi.end_time))) AS fresh_rate
    FROM tb_video_info tvi
    LEFT JOIN tb_user_video_log tuvi 
        ON tvi.video_id = tuvi.video_id
        -- 过滤播放时间
        AND DATE(tuvi.end_time) BETWEEN DATE_SUB((SELECT T FROM global_T), INTERVAL 29 DAY) AND (SELECT T FROM global_T)
    -- 核心:筛选近一个月发布的视频
    WHERE tvi.release_time BETWEEN DATE_SUB((SELECT T FROM global_T), INTERVAL 29 DAY) AND (SELECT T FROM global_T)
    GROUP BY tvi.video_id
    HAVING play_cnt > 0
)
SELECT
    video_id,
    ROUND((100*(finish_video_cnt/play_cnt) + 5*like_cnt + 3*comment_cnt + 2*retweet_cnt) / (fresh_rate + 1), 0) AS hot
FROM latest_info
ORDER BY hot DESC
LIMIT 3;

全部评论

相关推荐

05-23 19:33
重庆大学 Java
只学了传统后端,马上去后端实习了,在想要不要学习agent开发相关的。27秋招和26相比难度如何?
我连备胎都不是却还在...:就暑期实习而言,大厂官宣hc 比 26 多,但是我观察看应该低于 26 的,估计秋招也不简单
点赞 评论 收藏
分享
05-21 22:52
Java
2025916Ney...:你这个简历写的一眼看上去不是很舒服
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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