Ich bin neu in Netezza und muss die Anzahl der IDs zählen, die einen Schlüssel ungleich Null haben. Mein KEY ist ein Transaktionstyp, und ich möchte die Anzahl der IDs zurückgeben, für die eine Transaktion ausgeführt wurde. Grundsätzlich möchte ich eine Zählung aller UIDs, die einen Schlüssel ungleich Null haben.Netezza zählt bedingt einen Datensatz pro ID
Meine Daten:
SRC UID KEY ...
A 118 3 ...
A 517 0 ...
A 517 1 ...
A 517 4 ...
B 623 4 ...
C 972 0 ...
C 972 0 ...
Was ich zurückkehren wollen:
SOURCE UIDs UIDs_W_TRANS
A 2 2
B 1 1
C 1 0
Hier ist mein Code:
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
Was ich immer zurück ist
SOURCE UIDs UIDs_W_TRANS
A 2 3
B 1 1
C 1 0
Sie können sehen, dass meine Abfrage jeden Nicht-Null-KEY zählt. Ich habe eine Reihe von Variationen der obigen Abfrage ausprobiert, aber nichts hat mich näher gebracht. Wie kann ich nur 1 Nicht-Null-KEY pro UID zählen?
Wow, was für eine prägnante Art und Weise, diese zu lösen. In meinen Ergebnissen sieht es so aus, als zähle ich die UIDs ohne Transaktionen. Ich denke, ich möchte 'COUNT (UNTERSCHEIDUNGSFALL WENN SCHLÜSSEL! = 0 DANN UID ENDE) ALS UIDs_W_TRANS'. Kannst du mir auch helfen zu verstehen, warum ich in dieser Aussage keine ELSE-Klausel brauche? – Lenwood
@Lenwood. . . Ja, es sollte "<> 0" statt "= 0" sein. –