select month,ranking,song_name,play_pv
from
(
    select month(fdate) month,row_number() over(partition by month(fdate) order by count(t1.song_id) desc,t1.song_id) ranking,song_name,count(t1.song_id) play_pv
    from (play_log t1 join song_info t2 
    on t1.song_id=t2.song_id)  join user_info t3
    on t1.user_id=t3.user_id
    where age between 18 and 25 and year(fdate)='2022' and singer_name='周杰伦'
    group by month(fdate),song_name,t1.song_id) t
where ranking<=3;#2/3用例通过,顺序问题~在窗口函数里加song_id相关排序,此时聚合函数处也要加