select * from ( select month(fdate) month, row_number()over(partition by month(fdate) order by count(song_name) desc,s.song_id asc) ranking, song_name, count(song_name) 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 year(fdate)=2022 and age between 18 and 25 and singer_name='周杰伦' group by month(fdate),song_name,s.song_id ) ra where ranking<=3
重点:row_number()中使用的song_id 必须在分组时就添加 否则报错 看题解学到的