2010-01-13 3 views
12

Je suis en train d'obtenir un compte de chaque valeur dans une table en utilisant l'instruction SQL suivante:Pourquoi Postgres Group By NULL select ne compte-t-il pas?

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

(Il y a une clause WHERE dans le code réel, mais il n'a pas d'impact).

Quand je lance ce que j'obtenir des résultats comme ceci:

a  - 5 
b  - 4 
<null> - 0 

Peu importe le nombre d'entrées nulles je, il montre toujours un nombre de 0.

Toutes les idées pourquoi?

+1

Note: J'ai une solution de contournement pour cela (je viens d'union un SELECT nul, count (*) FROM table où col est null), mais il se sent comme un hack pour moi. – RodeoClown

Répondre

28

Compris. Modification du code pour utiliser COUNT (*) au lieu de COUNT (col). COUNT (col) ne comptait aucune ligne nulle, toutes les autres méthodes d'agrégation éliminent également les valeurs nulles de l'ensemble de résultats.