我有許多記錄與一些字段重複的表。我想要這些重複中最常見的一個。如何在Oracle中獲得不同記錄的最高計數?
所以,如果我的表中有像下面的數據:
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降至特定閾值以下會有效,但似乎有點不便。
如果更好,我可以創建一個臨時表,將不同的值放入,然後從那裏選擇,但似乎並不是必須的。
這工作,似乎是相當有效的。 – thursdaysgeek