如何使用 SQL 获取出现次数最多的行

How to get rows having maximum occurrence using SQL

我有一个参与者table:

我写了一个 CTE,它给出了以下 table:

CTE代码:

with cte as
(
select t.per1,t.per2,t.met1,concat(t.per1,t.per2) concated from
(
select p1.person_id per1, p1.meeting_id met1, p2.person_id per2 from participant p1 cross join participant p2
where p1.meeting_id=p2.meeting_id and p1.person_id<>p2.person_id
)t
where t.per1<t.per2
--order by t.per1,t.per2
)

现在我想从此 cte 中获取连接数最大的行。即 我想要行

Per1 Per2 Met1 Concated
1     2    10     12
1     2    20     12
1     2    30     12

因为 concated=12 出现最大次数

我怎样才能达到同样的效果?我尝试使用 count 和 group by 但无法 return Per1、Per2 和 Met1 一起使用。

提前致谢。

我们可以在最里面的查询中使用 COUNT() 分析来查找会议参加者对的计数:

WITH cte AS (
    SELECT p1.person_id per1, p1.meeting_id met, p2.person_id per2,
           COUNT(*) OVER (PARTITION BY p1.person_id, p2.person_id) cnt
    FROM participant p1
    INNER JOIN participant p2
        ON p1.meeting_id = p2.meeting_id AND p1.person_id < p2.person_id
)

SELECT TOP 1 WITH TIES met, per1, per2
FROM cte
ORDER BY RANK() OVER (ORDER BY cnt DESC);