一部のフィールドが重複している多数のレコードを含むテーブルがあります。これらの重複のそれぞれの中で最も一般的なものが必要です。
したがって、私のテーブルに以下のようなデータがある場合:
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
ただし、フィールド 1 ごとに最大数のレコードのみが必要です。パーティションとサブクエリをめぐって rank() と戦ってきましたが、一意性のために 2 つのフィールドを使用し、カウントによってトップ レコードを選択するための正しい構文が見つかりませんでした。探していて、確かにこれが尋ねられたのですが、見つかりません。
以下を取得したい
Field1 Field2 (optional) Count
A 10 4
B 5 3
目標は、少しだけ間違ったデータ (フィールド 1 とフィールド 2 の間のリンクが間違っている) を含むテーブルを見て、それが通常のデータに基づいてどうあるべきかを判断することです。悪いレコードがいくつあるかわからないので、特定のしきい値を下回る Count を削除することはできますが、少しぎこちないようです。
より良い場合は、個別の値を入れてそこから選択する一時テーブルを作成できますが、それは必要ないようです。