题解 | 每个月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排序,所以只需要按照月份和排名升序排序即可。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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