【问题标题】:COUNT number of NULLs in multiple columns多列中的 COUNT 个 NULL
【发布时间】:2014-10-31 00:42:01
【问题描述】:

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

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

目前的想法

  • COUNT 显式计算不是NULL 的东西,但我可以这样做将NULL 反转为not-NULL,反之亦然,以强制COUNT 做我想做的事:

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

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

  • NULLIF 在输入为NULL 时返回NULL,因此没有帮助。

有没有更清洁的方法?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    试试这个:

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

    也许这对你有用。因为就像你提到的那样,COUNT 只计算非空值,这应该给你你需要的空值的总和。

    【讨论】:

    • 我简单地提到我想在同一个查询中的多个列上执行此操作。我将修改问题以进一步强调这一点。谢谢!抱歉,我不是更清楚。
    • @jpmc26 我明白了 - 编辑看起来更合适吗?
    • 我似乎还有更多的事情要做。我需要对各个列进行计数(因此 columnA 中的 NULLs 数量和 columnB 中 NULLs 的数量)。再次抱歉。我非常感谢您的帮助。
    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多