多列中的COUNT个NULL数

时间:2014-10-31 00:42:02

标签: postgresql

我想计算单个表中多个列中NULL的出现次数。我需要每列的计数,而不是整个表的总计数。我非常希望在单个查询中这样做,以避免来回的开销,简化我的应用程序端代码,并避免多次表扫描。

如何计算每个特定列为NULL的行数?

到目前为止的想法

  • COUNT明确指出不是NULL的内容,但我可以将NULL转换为非NULL,反之亦然COUNT 1}}做我想做的事:

    SELECT COUNT(CASE WHEN my_column IS NULL THEN TRUE ELSE NULL END) FROM my_table;
    

    但这真的非常难看,特别是因为我想在同一个查询中的多个列上执行此操作。

  • 当输入为NULLIF时,
  • NULL会返回NULL,因此无效。

有更清洁的方式吗?

1 个答案:

答案 0 :(得分:6)

试试这个:

SELECT COUNT(*)-COUNT(column1) As column1, COUNT(*)-COUNT(column2) As column2 FROM my_table; 

也许这对你有用。如上所述,COUNT只计算非空值,这应该为您提供所需的空值之和。