2010-01-13 13 views
12

sto cercando di ottenere un conteggio di ogni valore in una tabella utilizzando il seguente SQL:Perché Postgres Group By NULL seleziona conta?

SELECT col, COUNT(col) 
FROM table 
GROUP BY col 

(C'è una clausola WHERE nel codice vero e proprio, ma non ha alcun impatto).

Quando eseguo questo ottengo risultati in questo modo:

a  - 5 
b  - 4 
<null> - 0 

Non importa quante voci nulla ho, mostra sempre un conteggio di 0.

Tutte le idee perché?

+1

Nota: Ho una soluzione per questo (ho appena unione uno SELECT null, count (*) FROM table WHERE col is null), ma mi sembra un trucco. – RodeoClown

risposta

28

Capito. Modificato il codice per utilizzare COUNT (*) invece di COUNT (col).

COUNT (col) non stava contando alcuna riga nulla, tutti gli altri metodi di aggregazione eliminano anche i valori nulli dal set di risultati.