题解 | 每个月Top3的周杰伦歌曲

每个月Top3的周杰伦歌曲

https://www.nowcoder.com/practice/4ab6d198ea8447fe9b6a1cad1f671503

WITH t1 AS(
    SELECT
        MONTH(pl.fdate) AS month,
        pl.song_id,
        COUNT(pl.user_id) AS play_times
    FROM
        play_log pl
        LEFT JOIN user_info ui ON pl.user_id = ui.user_id
        LEFT JOIN song_info si ON pl.song_id = si.song_id
    WHERE
        YEAR(pl.fdate) = 2022
        AND (ui.age BETWEEN 18 AND 25)
        AND si.singer_name = '周杰伦'
    GROUP BY
        MONTH(pl.fdate),
        pl.song_id
),
t2 AS(
    SELECT
        *
    FROM(
        SELECT
            month,
            song_id,
            play_times,
            RANK() OVER(
                PARTITION BY month
                ORDER BY play_times DESC, song_id ASC
            ) AS ranking
        FROM
            t1) tmp
    WHERE
        ranking <= 3
)
SELECT
    t2.month,
    t2.ranking,
    si.song_name,
    t2.play_times AS play_pv    
FROM
    t2 LEFT JOIN song_info si USING(song_id)
ORDER BY
    t2.month ASC, t2.ranking ASC, si.song_id ASC;

全部评论

相关推荐

02-11 14:29
已编辑
字节跳动_QA
Edgestr:这种的写代码最狠了
点赞 评论 收藏
分享
01-14 16:23
广州商学院 Java
双非后端失败第N人:如果准备好了可以直接投字节,字节是最不看学历的,只要想面,大概率都能给你约面。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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