Vertica中字段统计如何包含NULL值以获取正确总数?
解决Vertica统计包含NULL值的计数问题
嘿,我来帮你搞定这个计数难题!你现在遇到的情况很典型——Vertica里的COUNT(column_name)会自动忽略NULL值,而且如果你的WHERE条件只指定了scenario_set_name = 'A',自然就不会统计那些scenario_set_name为NULL的记录。
要把A和NULL的记录合并统计得到总数15,有两种简单的实现方式:
方式1:直接统计符合条件的所有行
如果你只需要总数(不需要区分A和NULL),可以直接调整WHERE条件,用COUNT(*)来统计所有符合条件的记录(包括NULL):
SELECT COUNT(*) FROM your_table WHERE scenario_set_name = 'A' OR scenario_set_name IS NULL;
这里COUNT(*)会统计所有满足WHERE条件的行,不管scenario_set_name是不是NULL,这样就能得到10+5=15的结果。
方式2:分组统计同时展示A和NULL的数量
如果你还需要分别看到A和NULL各自的计数,可以用GROUP BY——Vertica的GROUP BY会把NULL值作为一个独立的分组:
SELECT CASE WHEN scenario_set_name IS NULL THEN 'NULL' ELSE scenario_set_name END AS scenario_group, COUNT(*) AS record_count FROM your_table WHERE scenario_set_name = 'A' OR scenario_set_name IS NULL GROUP BY scenario_set_name;
这个查询会返回两行结果:一行是A的10条,一行是NULL的5条,方便你同时查看细分数据。
补充说明
为什么之前的查询只得到10?因为如果你的原查询用了COUNT(scenario_set_name),这个函数会跳过所有NULL值;就算你用了COUNT(*)但WHERE条件没包含scenario_set_name IS NULL,那NULL的记录也会被过滤掉。所以核心就是:
- 用
COUNT(*)或COUNT(1)来统计所有行(包括NULL) - 把NULL的情况加入WHERE条件(如果需要筛选特定值+NULL)
内容的提问来源于stack exchange,提问作者excelguy
相关产品推荐
相关产品推荐

