题解 | 被重复观看次数最多的3个视频

被重复观看次数最多的3个视频

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

 -- 第一步:统计每个用户对每个课程的观看次数
WITH
    user_course_views AS (
        SELECT
            pr.cid,
            pr.uid,
            COUNT(*) AS view_count
        FROM
            play_record_tb pr
        GROUP BY
            pr.cid,
            pr.uid
    ),
    -- 第二步:筛选出观看次数大于 1 的课程和用户组合,统计每个课程的重复观看人次数
    repeat_views AS (
        SELECT
            uc.cid,
            SUM(uc.view_count) AS pv
        FROM
            user_course_views uc
        WHERE
            uc.view_count > 1
        GROUP BY
            uc.cid
    ),
    -- 第三步:结合课程信息表,按重复观看人次数降序排序,若相同则按发布日期降序排序
    ranked_views AS (
        SELECT
            rv.cid,
            rv.pv,
            -- 第四步:为排序后的课程添加排名
            ROW_NUMBER() OVER (
                ORDER BY
                    rv.pv DESC,
                    ci.release_date DESC
            ) AS rk
        FROM
            repeat_views rv
            JOIN course_info_tb ci ON rv.cid = ci.cid
    )
    -- 第五步:选取排名前三的课程
SELECT
    cid,
    ROUND(pv, 3) AS pv,
    rk
FROM
    ranked_views
WHERE
    rk <= 3
ORDER BY
    rk;

全部评论

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务