在 SQL 中按列计算 NULL 值

Posted

技术标签:

【中文标题】在 SQL 中按列计算 NULL 值【英文标题】:Count NULL values by column in SQL 【发布时间】:2020-10-07 18:25:52 【问题描述】:

假设我有下表:

table

| a    | b   | c    |
|:-----|:----|:-----|
| 1    | a   | NULL |
| NULL | b   | NULL |
| 3    | c   | NULL |
| 4    | d   | 23   |
| NULL | e   | 231  |

如何计算每列 NULL 值的数量?

我的最终结果是:

| column_name    | n_nulls   |
|:---------------|:----------|
| a              | 2         |
| b              | 0         |
| c              | 3         |

【问题讨论】:

【参考方案1】:

你可以使用union all:

select 'a', count(*) - count(a) as n_nulls from t
union all
select 'b', count(*) - count(b) as n_nulls from t
union all
select 'c', count(*) - count(c) as n_nulls from t;

Redshift 是一个列存储数据库,因此可能没有更有效的方法。

【讨论】:

有什么办法可以做到不明确说明列吗?例如,如果我有一个包含 10 列的表,那将是一个非常大的查询 @BrunoMello 。 . .十列不是很多。您也可以对元数据表使用电子表格或 SQL 查询来生成查询。

以上是关于在 SQL 中按列计算 NULL 值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 数据框中按列值分组

在 xsl:fo 表中按列行值分组

在MySQL中按列值进行SUM

Power Query M - 使用自定义聚合(百分位)按列值分组

在matlab中按列将数据或值附加到csv文件

为啥在 C# 中的二维数组中按列写入速度很慢