select * from (
SELECT month
	( fdate ) AS month,
	ROW_NUMBER() over ( PARTITION BY MONTH ( fdate ) ORDER BY count(*) DESC,s.song_id ) AS ranking,
	song_name,
	count(*) AS play_pv 
FROM
	play_log p
	LEFT JOIN song_info s ON p.song_id = s.song_id
	LEFT JOIN user_info u ON u.user_id = p.user_id 
WHERE
	age BETWEEN 18 
	AND 25 and singer_name='周杰伦'
GROUP BY
	1,song_name,s.song_id) t where ranking<=3