2016-01-14 66 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

使用此格式:选择状态,根据状态从表名组中计数(*) –

相关问题