SQL分类TopN

题目:每个商品浏览次数Top3用户
思路:
1根据所需的排序粒度使用group by进行分组,统计次数
2子查询,使用开窗row_number(严格topn)和rank(可并列topn)进行排序
3最后子查询,使用where对row_number或rank筛选

SELECT
  product_id,
  user_id,
  cnt
FROM (
  SELECT
    product_id,
    user_id,
    cnt,
    RANK() OVER(PARTITION BY product_id ORDER BY cnt DESC) AS rn
  FROM (
    SELECT
      product_id,
      user_id,
      COUNT(*) AS cnt
    FROM product_view
    GROUP BY product_id, user_id
  ) t1
) t2
WHERE rn <= 3;
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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