我有一个包含很多记录的表,其中一些字段重复。我想要每个重复中最常见的。
所以,如果我的表有如下数据:
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
目标是查看只有一点点不正确数据的表(字段 1 和字段 2 之间的链接错误),并根据通常的情况确定它应该是什么。我不知道有多少不良记录,因此消除低于某个阈值的 Count 会起作用,但似乎有点笨拙。
如果更好,我可以制作一个临时表来将我的不同值放入其中,然后从中进行选择,但似乎没有必要这样做。