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

WITH t1 AS (
    SELECT MONTH(fdate) AS month,
           a.user_id,
           b.song_id,
           b.song_name
    FROM play_log a
    LEFT JOIN song_info b
    ON a.song_id = b.song_id
    LEFT JOIN user_info c
    ON a.user_id = c.user_id
    WHERE SUBSTR(fdate,1,4)='2022'
    AND b.singer_name = '周杰伦'
    AND c.age BETWEEN 18 AND 25
),
t2 AS (
    SELECT
        month,
        song_id,
        song_name,
        count(song_name) AS play_pv
    FROM t1
    GROUP BY month, song_id, song_name
),
t3 AS (
    SELECT month,
           ROW_NUMBER()
               over (PARTITION BY month
                   ORDER BY play_pv DESC,song_id ASC) AS ranking,
           song_name,
           song_id,
           play_pv
    FROM t2
)
SELECT month,
       ranking,
       song_name,
       play_pv
FROM t3
WHERE ranking <= 3;

# 这道题的细节在于排名需要根据歌曲编号升序排序!

全部评论

相关推荐

下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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