Select

額外的“計數”行,總數為 0

  • August 14, 2015

考慮以下:

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 和零計數的附加行?

因為列中有NULLga

為什麼計數為零?

雖然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)

引用自:https://dba.stackexchange.com/questions/111069