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;
全部评论

相关推荐

大概是3月15开始陆陆续续接到一些面试/笔试的,至今为止差不多一个月吧期间网易、pdd、mhy笔试全挂&nbsp;=&gt;&nbsp;没希望面试:1.&nbsp;滴滴&nbsp;IBG&nbsp;国际化后端,部门主要是用golang的,我也基本能回答出来,手撕也是用go写出来的,等了一个月挂2.&nbsp;字节&nbsp;国际支付&nbsp;后端,这个感觉八股答的还行,但是在这之前字节一直有ptsd,手撕又是写个98%,没提交面评挂了3.&nbsp;腾讯&nbsp;TEG&nbsp;云平台架构&nbsp;后台,这个一面等了四五天才约二面,二面把我当高手面,实在扛不住拷打,挂4.&nbsp;美团&nbsp;业务核心平台&nbsp;后端,一面当天过的,二面等了两个星期才面,上来就是感觉有kpi的嫌疑,至今还在人才库5.&nbsp;字节&nbsp;番茄小说&nbsp;客户端,一面秒过,二面和美团二面同一天面,也是同一天挂...&nbsp;可能是移动端的知识答得不好6.&nbsp;字节&nbsp;今日头条&nbsp;客户端,一面也是一个工作日过了,二面面完第二天就挂&nbsp;。特地补了移动端的知识,感觉是觉得我实习过程中更多的是被动接收任务,而没有自己的思考吧【实验数据根本没权限,加上自己一直摇摆想做的方向】基本上就是一个星期1~2场面试,实在是尽力了,但是还是无法战胜特别是字节,后两次挂的很奇葩,都感觉就是面评可以,但是他们不想要...目前就下周还有一个大厂面试,真的很焦虑,我感觉下周那场也没啥信心了暑期实习真的还能有offer嘛,我都开始投递日常实习了,但是目前没有任何的反应希望四月能对我好一点...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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