with
temp as (
select
month(fdate) as month,
count(p.song_id) as play_pv,
song_name,
row_number() over (
partition by
month(fdate)
order by
count(p.song_id) desc,
p.song_id ASC
) as ranking
from
play_log p
join song_info s on p.song_id = s.song_id
join user_info u on u.user_id = p.user_id
where
age > 17
and age < 26
and singer_name = '周杰伦'
group by
month(fdate),
song_name,
p.song_id
)
select
month,
ranking,
song_name,
play_pv
from
temp
where
ranking < 4
order by
month,
play_pv desc;

京公网安备 11010502036488号