誰かが私のSQLクエリを検証できれば本当にありがたいです。
次のデータセットの場合:
MD5 UserPK CategoryPK
ADCDE 1 7
ADCDE 1 4
ADCDE 1 7
dffrf 1 7
dffrf 2 7
dffrf 2 6
dffrf 1 1
同一のMD5値、同一のCatgegoryPK、および2つ以上の異なるUserPK値を持つ2つ以上の行が存在するMD5およびCategoryPKを選択したいと思います。
つまり、2人以上の異なるユーザー(UserPK)が同じカテゴリ(UserPK)を同じファイル(Md5)に割り当てたすべてのレコードのMD5とcategoryPKを知りたいのです。同じユーザーがカテゴリを複数回割り当てたレコードには興味がありません(別のユーザーが同じカテゴリをそのファイルに割り当てた場合を除く)。
したがって、上記のデータから、次のように返されます。
md5 CategoryPK
dffrf 7
私が書いたクエリは次のとおりです。
SELECT md5,
count(md5),
count(distinct categorypk) as cntcat,
count(distinct userpk) as cntpk
FROM Hash
group by md5 having count(md5) > 1
and cntpk > 1
and cntcat = 1;
それはうまくいくようですが、私が怒りでそれを使い始める前に、私が何かを逃した場合、またはそれを行うためのより良い方法がある場合に備えて、セカンドオピニオンをいただければ幸いです。
ありがとう