2010-01-13 2 views
12

다음 SQL을 사용하여 테이블의 각 값을 계산하려고합니다.왜 Postgres Group by NULL을 선택하지 않습니까?

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

(실제 코드에는 WHERE 절이 있지만 영향은 없습니다).

이렇게하면 다음과 같은 결과를 얻을 수 있습니다 :

얼마나 많은 null 항목을 가지고 있든 상관없이 항상 0을 표시합니다.

왜 그런가?

+1

참고 :이 문제를 해결할 수있는 방법이 있습니다. SELECT null, count (*) FROM WHERE WHERE col = null) 테이블을 해킹하는 것처럼 느껴집니다. – RodeoClown

답변

28

알아 냈어. COUNT (*) 대신 COUNT (COL)를 사용하도록 코드를 변경했습니다.

COUNT (col)이 널 (NULL) 행을 계수하지 않았으며 다른 모든 집계 메소드도 결과 세트에서 널 (null)을 제거합니다.