Select
額外的“計數”行,總數為 0
考慮以下:
db=> SELECT ga, count(ga) FROM gb GROUP BY ga ORDER BY ga ;
給出以下輸出:
ga | count ---+------ ? | 200 A | 100 B | 50 | 0 (4 rows)
為什麼會有一個空
ga
的且計數為零的附加行?
為什麼會有一個空 ga 和零計數的附加行?
因為列中有
NULL
值ga
。為什麼計數為零?
雖然
COUNT(*)
永遠不能給出 0 作為結果(因為它計算行數),COUNT(column)
或者COUNT(expression)
可以給出 0 因為它計算列/表達式中的非空值。因此,唯一合乎邏輯的解釋是該
ga
列有一些空值。多少?
你可以通過執行找到:
SELECT ga, count(ga) AS count_non_nulls, count(*) AS count_all FROM gb GROUP BY ga ORDER BY ga ;
這會給你類似的東西:
ga | count_non_nulls | count_all ---+-----------------+----------- ? | 200 | 200 A | 100 | 100 B | 50 | 50 | 0 | 17 -- some number >= 1 (4 rows)