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;
全部评论
相关推荐
04-15 11:31
门头沟学院 C++ 点赞 评论 收藏
分享
查看28道真题和解析