0
我是Netezza的新手,需要計算具有非零密鑰的ID的數量。我的KEY是一個事務類型,我想返回已經有任何事務的ID的計數。基本上我想要一個非零密鑰的所有UID的計數。Netezza有條件地計算每個ID一個記錄
我的數據:
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
您可以看到我的查詢正在計算每個非零KEY。我已經嘗試了上述查詢中的一些變體,但沒有讓我更接近。我怎樣才能爲每個UID計數1個非零KEY?
哇,真是一個簡潔的方式來解決這個問題。在我的結果中,在我看來,這是給了一個沒有交易的UID數量。我想我需要'COUNT(DISTINCT CASE WHEN KEY!= 0 THEN UID END)AS UIDs_W_TRANS'。另外,您能否幫助我理解爲什麼我在本聲明中不需要ELSE子句? – Lenwood
@Lenwood。 。 。是的,它應該是'<> 0'而不是'= 0'。 –