首页 > 解决方案 > 使用 SQL 查找表中值的最高计数

问题描述

我正在寻找一种通过 SQL 查找列的最高计数值的方法。例如,如果这是我的数据

id   type
----------
 1    A
 1    B
 1    A
 2    C
 2    D
 2    D

我希望结果是:

1   A
2   D

我正在寻找一种方法来做到这一点,而无需摸索我计数的列(在示例中输入)

谢谢

标签: sql

解决方案


从统计学上讲,这被称为“模式”。您可以使用窗口函数计算它:

select id, type, cnt
from (select id, type, count(*) as cnt,
             row_number() over (partition by id order by count(*) desc) as seqnum
      from t
      group by id, type
     ) t
where seqnum = 1;

如果存在关联,则从关联中选择任意值。


推荐阅读