with tiaojian as ( select month(fdate) as month, dense_rank()over(partition by month(fdate) order by count(p.song_id) desc,p.song_id asc) as pn, song_name, count(p.song_id) cnt from play_log p left join song_info sf on p.song_id=sf.song_id left join user_info u on u.user_id=p.user_id where singer_name="周杰伦" and age between 18 and 25 group by month(fdate),p.song_id,song_name ) select month, pn as ranking, song_name, cnt as play_pv from tiaojian where pn<=3