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

每个月Top3的周杰伦歌曲

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

用到的知识点:三表连接、分组聚合、开窗函数排序(row_number()over())、日期函数、最后别忘了排序和取Top3的歌曲(用到子查询)。提交时发现窗口函数排序时需要先按播放次数降序,再按歌曲id升序排序,才能获得正确答案。最终代码如下。

select sub.month,sub.ranking,sub.song_name,sub.play_pv
from(
select month(fdate) month,row_number()over(partition by  month(fdate) order by count(p.user_id) desc,s.song_id) ranking,song_name,count(p.user_id) play_pv
from play_log p
join song_info s on p.song_id=s.song_id
join user_info u on p.user_id=u.user_id
where age between 18 and 25 
and singer_name='周杰伦'
group by month(fdate),p.song_id,song_name
) sub
where sub.ranking<=3
order by month,ranking

全部评论

相关推荐

点赞 评论 收藏
分享
犹豫的小狐狸刷了100道题:你是我在牛课上见到的最漂亮的女孩了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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