2016-01-14 99 views
0

我在兩個單獨的列上進行計數函數,但是從具有不同結果的表中進行計數。 Count應該如何包含Null值?從同一表中選擇計數返回不同的編號

SELECT COUNT(Record_Id) FROM my_schema.table 

返回40493

SELECT COUNT(Status) FROM my_schema.table 

返回40249

回答

1

這並不奇怪。帶有作爲參數的表達式的COUNT()統計非NULL值的數量。

因此,這就是說Record_IdNULLstatus多六倍。

您可以使用COUNT(*)獲得記錄總數。

+0

是否有一個用於計算除了使用where子句之外的空值的函數? – user2242044

+0

@ user2242044。 。 。我不知道你在問什麼。 'COUNT(*)'統計行數。 'COUNT(status)'計數非空狀態值的數量。 'COUNT(*) - COUNT(status)'是計算'NULL'值數量的一種方式(儘管我爲此將在MySQL中使用SUM(status爲null))。 –

1

count()不包括NULL值。這是專門用於計算非空值的目的,特別是在具有大量外連接的複雜查詢中。

如果要獲取行數,請不要在特定列上使用計數,而只需使用COUNT(1)或任何其他標量值,該值將在結果集中的每一行中重複使用。

1

如果選擇特定列的計數,則不計算空值。請參閱here

+0

如果我想和一個小組一起計數幷包含空值,該怎麼辦? – user2242044

+0

使用此格式:選擇狀態,根據狀態從表名組中計數(*) –

相關問題