SQL为count()返回0,但使用简单选择返回多行
对不起,我的问题措辞不太清楚 我在下面运行这个简单的查询SQL为count()返回0,但使用简单选择返回多行,sql,database,ms-access,Sql,Database,Ms Access,对不起,我的问题措辞不太清楚 我在下面运行这个简单的查询 SELECT count(cg) FROM all_data WHERE cg is null 我得到的结果是0。当我运行此查询时 SELECT cg FROM all_data WHERE cg is null 然后得到一堆符合条件的记录。很明显,有许多记录的cg值为null,但它们不会出现在计数查询中 这有什么原因吗?我做错什么了吗 感谢您的帮助聚合计数、总和等。忽略空值 使用COUNT*对符合条件的所有行进行计数 SELECT
SELECT count(cg)
FROM all_data
WHERE cg is null
我得到的结果是0。当我运行此查询时
SELECT cg
FROM all_data
WHERE cg is null
然后得到一堆符合条件的记录。很明显,有许多记录的cg值为null,但它们不会出现在计数查询中
这有什么原因吗?我做错什么了吗
感谢您的帮助聚合计数、总和等。忽略空值
使用COUNT*对符合条件的所有行进行计数
SELECT COUNT(*)
FROM all_data
WHERE cg IS NULL
进一步阅读-:
除非expr是星号*通配符,否则Count函数不会对具有空字段的记录进行计数。如果使用星号,Count将计算记录总数,包括包含空字段的记录。Count*比Count[列名]快得多
聚合计数、总和等。忽略空值
使用COUNT*对符合条件的所有行进行计数
SELECT COUNT(*)
FROM all_data
WHERE cg IS NULL
进一步阅读-:
除非expr是星号*通配符,否则Count函数不会对具有空字段的记录进行计数。如果使用星号,Count将计算记录总数,包括包含空字段的记录。Count*比Count[列名]快得多
如果要计算空值的数量,请使用以下查询
SELECT
SUM(CASE WHEN CG IS NULL THEN 1 END) AMOUNT_CG
FROM all_data
如果要计算空值的数量,请使用以下查询
SELECT
SUM(CASE WHEN CG IS NULL THEN 1 END) AMOUNT_CG
FROM all_data
根据SQL参考手册中关于以下内容的部分,不再遵循上面朋友的提示: 除COUNT*和GROUPING之外的所有聚合函数都忽略空值。您可以在聚合函数的参数中使用NVL函数来替换空值。COUNT从不返回null,而是返回数字或零。对于所有剩余的聚合函数,如果数据集不包含任何行,或者只包含作为聚合函数参数的null行,则该函数返回null 因此,根据以上信息,我们可以得出结论,要解决您的问题,请使用count*而不是countcg
根据SQL参考手册中关于以下内容的章节: 除COUNT*和GROUPING之外的所有聚合函数都忽略空值。您可以在聚合函数的参数中使用NVL函数来替换空值。COUNT从不返回null,而是返回数字或零。对于所有剩余的聚合函数,如果数据集不包含任何行,或者只包含作为聚合函数参数的null行,则该函数返回null 因此,根据以上信息,我们可以得出结论,要解决您的问题,请使用count*而不是countcg
如果用count*替换countcg,是否有其他行为?count仅统计非空值。如果用count*替换countcg,是否有其他行为?count仅统计非空值。无论表中有多少空值,这种方法每次都需要进行完整的表扫描,因此在大多数情况下是不合适的cases无论表中有多少空值,这种方法每次都需要进行完整的表扫描,因此在大多数情况下是不合适的