题解 | 每个月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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务