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;
思路:
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;
全部评论
相关推荐
YYXFZ:牛魔在哪
点赞 评论 收藏
分享
06-02 00:21
门头沟学院 Java 点赞 评论 收藏
分享
程序员小白条:第二个项目就别写了.....这简历本来就是靠学历吃面试的,你要是不是92,连中小厂都没机会面试
点赞 评论 收藏
分享