我在两个单独的列上进行计数函数,但是从具有不同结果的表中进行计数。 Count应该如何包含Null
值?从同一表中选择计数返回不同的编号
SELECT COUNT(Record_Id) FROM my_schema.table
返回40493
SELECT COUNT(Status) FROM my_schema.table
返回40249
我在两个单独的列上进行计数函数,但是从具有不同结果的表中进行计数。 Count应该如何包含Null
值?从同一表中选择计数返回不同的编号
SELECT COUNT(Record_Id) FROM my_schema.table
返回40493
SELECT COUNT(Status) FROM my_schema.table
返回40249
这并不奇怪。带有作为参数的表达式的COUNT()
统计非NULL
值的数量。
因此,这就是说Record_Id
是NULL
比status
多六倍。
您可以使用COUNT(*)
获得记录总数。
count()
不包括NULL值。这是专门用于计算非空值的目的,特别是在具有大量外连接的复杂查询中。
如果要获取行数,请不要在特定列上使用计数,而只需使用COUNT(1)
或任何其他标量值,该值将在结果集中的每一行中重复使用。
是否有一个用于计算除了使用where子句之外的空值的函数? – user2242044
@ user2242044。 。 。我不知道你在问什么。 'COUNT(*)'统计行数。 'COUNT(status)'计数非空状态值的数量。 'COUNT(*) - COUNT(status)'是计算'NULL'值数量的一种方式(尽管我为此将在MySQL中使用SUM(status为null))。 –