通过

时间:2017-07-20 20:09:00

标签: sql

我正在尝试编写一个SQL查询来获取每个用户与之交互最多的合作伙伴公司。与合作伙伴公司的每次互动都有一排。 WHERE子句抛出错误。

SELECT user_id, partner_id, COUNT(partner_id)  
FROM users  
WHERE COUNT(partner_id) = MAX(COUNT(partner_id))  
GROUP BY user_id, partner_id;

有没有办法让计数成为用户的最大数量?如果没有运行查询的WHERE,那么我会得到与每个用户交互的所有合作伙伴的列表,以及用户与每个合作伙伴交互的次数。

1 个答案:

答案 0 :(得分:0)

此值称为"模式"在统计中。您可以使用ROW_NUMBER()轻松计算它:

SELECT user_id, partner_id, cnt
FROM (SELECT user_id, partner_id, COUNT(*) as cnt
             ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY COUNT(*) DESC) as seqnum
      FROM users  
      GROUP BY user_id, partner_id
     ) u
WHERE seqnum = 1;
相关问题