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