题解 | 每个月Top3的周杰伦歌曲
每个月Top3的周杰伦歌曲
https://www.nowcoder.com/practice/4ab6d198ea8447fe9b6a1cad1f671503
select month, ranking, song_name, play_pv from (select month(P.fdate) as month,###月份 ROW_NUMBER() OVER(PARTITION BY month(P.fdate) ORDER BY COUNT(*) DESC,P.song_id) as ranking,###编号,先按月份分组,按播放次数从高到低排序,排名相同的按歌曲ID排序。即得出每个月播放量从高到低的歌曲排名。 S.song_name,###歌名 COUNT(*) as play_pv###播放次数 from play_log as P left join song_info as S on P.song_id = S.song_id###左连接匹配歌名 left join user_info as U on P.user_id = U.user_id###左连接匹配年龄 where year(P.fdate) = 2022###筛选年份为2022年 and S.singer_name = '周杰伦'###筛选歌手为周杰伦 AND S.song_name IS NOT NULL###除了周杰伦以外的歌手不统计 and U.age between 18 and 25###筛选年龄是18至25岁的用户 group by###按月份、歌名,歌曲ID分组 month(P.fdate),S.song_name,P.song_id) as R ###得到每月播放周杰伦歌曲的播放量排名; where R.ranking <= 3###只需要显示每月TOP3的歌曲 order by month, ranking;###前面已经按照播放量、歌曲ID排序,所以只需要按照月份和排名升序排序即可。


海康威视公司福利 1409人发布