sql - SQL SUM 忽略 NULL 值
问题描述
我有一个表 TEST_TABLE 如下:
Name x_col y_col
=======================
Jay NULL 2
这是一个更大问题的简单表示,但就足够了。
当我执行以下查询时,我会NULL
返回
SELECT SUM(x_col + y_col) FROM TEST_TABLE WHERE Name='Jay'
我希望它是2
。我认为该SUM()
方法忽略了 NULL 值。如何忽略此查询中为空的值?或者实际上一般来说,因为这对我的很多算法来说都是一个问题。
解决方案
你得到NULL
是因为NULL + 2
回报NULL
。的SUM()
只有一行,如果+
表达式是NULL
,则SUM()
返回NULL
。
如果您想NULL
被视为0
,请使用COALESCE()
:
SELECT SUM(COALESCE(x_col, 0) + COALESCE(y_col, 0))
FROM TEST_TABLE
WHERE Name = 'Jay';
最后一点。如果您从数据开始并过滤掉所有行,则结果仍将为 NULL。要获得0
,您需要一个额外的COALESCE()
:
SELECT COALESCE(SUM(COALESCE(x_col, 0) + COALESCE(y_col, 0)), 0)
FROM TEST_TABLE
WHERE Name = 'Jayden';
推荐阅读
- docker - 使用 docker 实时升级
- html - 尝试使用 flex 规则在 flex 容器中左对齐文本
- zapier - 样本数据引起的额外触发输出
- python - Python - 如何根据字典对数组中的值进行排序和替换
- c# - 如何读取一个字符串直到逗号,然后保存该位并显示它?
- laravel - GraphQL ID 类型更正 - 如何使用 String?
- python - 如何通过 Python 使用谷歌翻译翻译口语成绩单
- javascript - 如何专门为字符串着色文本?
- javascript - Javascript Promise 链接无法按预期工作
- sap - 如何通过 ABSL 或 Webservice 在供应商帐户中创建新的费用/信用?