0
Netezzaを初めて使い、ゼロ以外のキーを持つIDの数を数える必要があります。私のKEYはトランザクションタイプであり、トランザクションを持っているIDの数を返したいと思います。基本的には、ゼロ以外のキーを持つすべてのUIDの数を求めます。NetezzaはIDごとに1レコードを条件付きでカウントします
マイデータ:私は返すようにしたいどのような
SRC UID KEY ...
A 118 3 ...
A 517 0 ...
A 517 1 ...
A 517 4 ...
B 623 4 ...
C 972 0 ...
C 972 0 ...
:
SOURCE UIDs UIDs_W_TRANS
A 2 2
B 1 1
C 1 0
ここに私のコードです:
SELECT
SRC AS SOURCE,
COUNT(DISTINCT(UID)) AS UIDs,
SUM(CASE WHEN KEY = 0 THEN 0 ELSE 1) AS UIDs_W_TRANS
FROM
DATABASE
GROUP BY
UID,
SOURCE
私は戻って取得しています何
SOURCE UIDs UIDs_W_TRANS
A 2 3
B 1 1
C 1 0
です
私のクエリがゼロ以外のキーをすべてカウントしていることがわかります。私は上記のクエリにいくつかのバリエーションを試しましたが、何も私を近づけませんでした。 UIDごとに0以外のKEYを1つだけカウントするにはどうすればよいですか?
うわー、これを解決するためにどのような簡潔な方法。私の結果では、これはトランザクションなしのUIDをカウントしているように見えます。私は 'UIDs_W_TRANS'として' COUNT(DISTINCT CASE WHEN KEY!= 0 THEN UID END)したいと思います。また、なぜこの文でELSE句が必要ないのか理解できますか? @Lenwood。 – Lenwood
。 。はい、 '= 0'ではなく' <> 0'でなければなりません。 –