select * from ( select d.month, row_number() over(partition by d.month order by d.play_pv desc,d.song_id) as ranking ,d.song_name,d.play_pv from ( select month(a.fdate) month, c.song_name,c.song_id,count(*)play_pv from play_log a left join user_info b on a.user_id=b.user_id left join song_info c on ...