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

每个月Top3的周杰伦歌曲

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

# 1.进行表联结
# 2.分组聚合,并使用窗口函数排序
# 3.将以上查询作为子查询传入主查询,筛选出每组前三名
SELECT *
FROM(
    SELECT MONTH(p.fdate) AS month, 
    ROW_NUMBER() OVER(PARTITION BY MONTH(p.fdate) ORDER BY COUNT(s.song_name)    DESC, p.song_id) AS ranking,
    s.song_name, 
    COUNT(*) AS play_pv
    FROM  play_log AS p
    LEFT OUTER JOIN song_info AS s
    ON p.song_id = s.song_id
    LEFT OUTER JOIN user_info AS u
    ON p.user_id = u.user_id	
    WHERE u.age BETWEEN 18 AND 25 
    AND YEAR(p.fdate) = 2022
    AND s.singer_name = '周杰伦'
    GROUP BY MONTH(p.fdate), s.song_name, p.song_id # 聚合函数前的字段都要出现在GROUP BY中
) AS T1
WHERE T1.ranking <=3
ORDER BY month, ranking;

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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