获取各列Null/空白值计数的SQL查询实现问题
统计数据表各列Null/空白值数量的SQL解决方案
我来帮你搞定这个问题!首先明确你的场景:你有一张名为table1的数据表,数据如下:
| ID | Type | Date | Var1 | Var2 |
|---|---|---|---|---|
| A-1 | SRT | 2017-12-01 18:15:22 | 25 | R28 |
| A-2 | Null | Null | Null | Null |
| A-3 | Null | Null | ||
| A-4 | SOY | 2017-12-01 18:15:22 | R28 |
你的需求是一次性统计每一列中值为Null或者空白的数量,而不是单独查询某一列,期望得到的结果是:
| ID | Type | Date | Var1 | Var2 |
|---|---|---|---|---|
| 0 | 2 | 2 | 3 | 2 |
解决方案SQL语句
你可以使用带CASE表达式的聚合查询,一次性计算所有列的符合条件的数量:
SELECT SUM(CASE WHEN ID IS NULL OR ID = '' THEN 1 ELSE 0 END) AS ID, SUM(CASE WHEN Type IS NULL OR Type = '' THEN 1 ELSE 0 END) AS Type, SUM(CASE WHEN Date IS NULL OR Date = '' THEN 1 ELSE 0 END) AS Date, SUM(CASE WHEN Var1 IS NULL OR Var1 = '' THEN 1 ELSE 0 END) AS Var1, SUM(CASE WHEN Var2 IS NULL OR Var2 = '' THEN 1 ELSE 0 END) AS Var2 FROM table1;
逻辑说明
- 对每一列,用
CASE语句判断当前行的列值是否为Null或者空白字符串:符合条件返回1,否则返回0 - 用
SUM函数把每一列的1累加起来,得到的就是该列中Null/空白值的总数量 - 最终结果会以一行的形式返回,每一列对应原表列的统计数,完全匹配你想要的输出格式
内容的提问来源于stack exchange,提问作者Roy1245
相关产品推荐
相关产品推荐

