【问题标题】:SQL Get users with max occurrences in tableSQL获取表中出现次数最多的用户
【发布时间】:2021-04-09 21:37:13
【问题描述】:

鉴于下表transactions记录了发生交易的卖家和买家的ID,我想确定参与交易次数最多的用户以及该用户参与的交易次数。

seller_id buyer_id date
1 4 2020-01-02
2 1 2020-01-03
3 2 2020-02-16
4 2 2020-02-22
4 3 2020-03-05

想要的输出是这样的:

ID n_trans
2 3
4 3

因为用户 2 共有 3 笔交易(1 笔卖家,2 笔买家),而用户 4 也有 3 笔交易(2 笔卖家,1 笔买家)。可以假设一个用户在同一笔交易中不能是买方和卖方,并且每个买卖双方的组合不重复。

什么 SQL 查询会得到这个?我不会在网上找到任何类似的问题。提前致谢!

【问题讨论】:

  • 您使用的是哪个 MySQL 版本?

标签: mysql sql


【解决方案1】:

您可以取消透视、聚合和使用窗口函数:

select id, cnt
from (select id, count(*) as cnt,
             rank() over (order by count(*) desc) as seqnum
      from ((select seller_id as id, date from t) union all
            (select buyer_id, date from t)
           ) i
      group by id
     ) i
where seqnum = 1;

【讨论】:

  • 行得通,谢谢!不知道为什么我没有想到使用 union all :)
猜你喜欢
  • 2021-11-09
  • 2012-06-23
  • 2011-04-16
  • 2022-11-28
  • 2010-11-06
相关资源
最近更新 更多