提问者:小点点

SQL获取表中出现次数最多的用户


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

所需输出如下:

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

什么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;