特定のユーザー名から特定の条件に基づいて最良のレコードを選択できるようにするクエリを実行したいと思います。私は2つの列(col01、col02)を持っていますが、私が見ている基準です。一連の基準に基づいてレコードを選択する
•1つのレコード(下の例ではユーザー名a)に両方の列がある場合は、その列を優先してください。 1つのレコードは1つのレコードがcol01を持っている、とcol01がかかる以外は、はいとしてcol02を持って
•場合(下の例では、ユーザ名c)は、次の第二順位precenenceを取るはい、としてcol01を持って
•場合優先順位(下の例のユーザー名d)。
•あるレコードのcol02がyesで、他のレコードがnoの場合、列2より3番目の優先順位(下の例ではユーザー名g)が使用されます。
•両方のレコードは、これらのレコードが(ユーザ名のB、E、F)以下
さらに調査する必要があるとして返されるべきではないどちらよりも、同じである場合には、例えば、サンプルと出力されます。どのようにSQLクエリを使用して行うことができますか?
+----------+-----+-------+-------+
| username | id | col01 | col02 |
+----------+-----+-------+-------+
| a | 1 | yes | yes |
| a | 2 | yes | no |
| b | 3 | no | no |
| b | 4 | no | no |
| c | 5 | yes | no |
| c | 6 | no | no |
| d | 7 | yes | no |
| d | 8 | no | yes |
| e | 9 | no | yes |
| e | 10 | no | yes |
| f | 11 | yes | yes |
| f | 12 | yes | yes |
| g | 13 | no | no |
| g | 14 | no | yes |
+----------+----+--------+-------+
出力
+----------+-----+-------+------+
| username | id | col01 | col02|
+----------+-----+-------+------+
| a | 1 | yes | yes |
| c | 5 | yes | no |
| d | 7 | yes | no |
| g | 14 | no | yes |
+----------+----+--------+------+
編集:私は状況を説明するよう求められました。基本的に、レコードは同じエリア(ユーザ名)から来ます。 col01は最新の情報で、col02は古いものです。両方の列が私たちにとって重要なので、両方がイエスであればそれが良い理由です。より最近のcol01は、より信頼できるデータがある場所です。すべてのレコードがまったく同じ場合は、データを理解するために少し深く掘り下げなければなりません。
データサンプルの各レコードにメモを追加して、それが破棄された理由を説明することもできます。あなたの条件を理解することは難しいです。 – sagi
ユーザ名 'f' –
の場合、ユーザ名fは両方のレコードで同じ値を持つので、手動で調べなければなりません。 – user7002207