题解 | 每个月Top3的周杰伦歌曲
每个月Top3的周杰伦歌曲
https://www.nowcoder.com/practice/4ab6d198ea8447fe9b6a1cad1f671503
WITH source AS (
SELECT
p.user_id,
p.fdate,
s.song_name,
s.song_id,
MONTH(p.fdate) AS month
FROM play_log p
JOIN song_info s
ON p.song_id = s.song_id
AND s.singer_name = '周杰伦'
-- 关联用户表,筛选18-25岁用户
JOIN user_info u
ON u.user_id = p.user_id
AND u.age BETWEEN 18 AND 25
-- 筛选2022年的播放记录
WHERE YEAR(p.fdate) = 2022
),
play_cnt AS (
SELECT
month,
song_name,
song_id,
COUNT(song_name) AS play_pv
FROM source
GROUP BY month,song_name,song_id
),
ranks AS (
SELECT
month,
ROW_NUMBER() OVER(PARTITION BY month ORDER BY play_pv DESC,song_id) AS ranking,
song_name,
play_pv
FROM play_cnt
)
SELECT * FROM ranks WHERE ranking <= 3
查看8道真题和解析