提示
Hive SQL 教程 欢迎使用。提供建议、纠错、催更等加作者微信: gairuo123(备注:sql )和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在数据探查过程中,我们经常需要查看一个字段中缺失值的情况,如果缺失值占比过多,一般会认为此字段的质量不高,可能会被删除。在本需求中,我们在一个数据表 tab,我们要探查缺失值的列中 col 列,我们选取了 20220101 这一天的数据作为抽样。
原数据 tab 表:
p_day | col |
---|---|
20220101 | 32 |
20220101 | NULL |
20220101 | 33 |
20220102 | NULL |
20220102 | 34 |
... | ... |
SQL 代码如下:
SELECT sum(col IS NOT NULL) AS not_null_cnt,
sum(col IS NULL) AS null_cnt,
sum(col IS NULL)/sum(1) * 100 as null_rate
FROM tab
WHERE p_day = 20220101
得到的数据如:
not_null_cnt | null_cnt | null_rate |
---|---|---|
7 | 3 | 33.33333333 |
以上分别是非缺失值数量、缺失值数量以及缺失值占比。
讲解一下代码逻辑:
col IS NOT NULL
和 col IS NULL
为逻辑表达式,会对列值进行对比,返回一个布尔值以上就完成了整个需求,我们无需要做 group by 分组,快速查询出我们想要的数据。
(完)
更新时间:March 2, 2022, 3:46 p.m. 标签:sql 数据探查