我有一个包含大量记录的表,其中一些字段重复.我想要最常见的每个重复.
所以,如果我的表有如下数据:
ID Field1 Field2
1 A 10
2 A 12
3 B 5
4 A 10
5 B 5
6 A 10
7 B 8
8 B 5
9 A 10
我可以选择不同的并获得计数:
select distinct Field1, Field2, count(Field1)
from Table
group by Field1, Field2
order by Field1, count(Field1) desc
这会给我
Field1 Field2 Count
A 10 4
A 12 1
B 5 3
B 8 1
但是,我只想要具有最高计数的每个Field1的记录.我一直在使用rank()而不是分区和子查询,但是没有找到使用两个字段表示唯一性并按计数选择最高记录的正确语法.我一直在寻找,我确信这已被问到,但我找不到它.
我想得到以下内容
Field1 Field2 (optional) Count
A 10 4
B 5 3
目标是查看一个只有一点不正确数据的表(在field1和field2之间链接错误),并根据它通常的内容确定它应该是什么.我不知道有多少不良记录,因此将Count除去低于某个阈值会起作用,但似乎有点笨拙.
如果它更好,我可以制作一个临时表,将我的不同值放入,然后从那里选择,但似乎不应该是必要的.