sql sum忽略空值

niwlg2el  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(358)

我有一个测试表,如下所示:

Name     x_col       y_col
=======================
Jay     NULL     2

这是对一个更大问题的简单化表述,但已经足够了。
当我执行以下查询时,我得到 NULL 返回

SELECT SUM(x_col + y_col) FROM TEST_TABLE WHERE Name='Jay'

我希望是这样 2 . 我以为 SUM() 方法忽略空值。如何忽略此查询中的空值?或者实际上,一般来说,这对我的很多算法来说都是个问题。

unguejic

unguejic1#

你得到了吗 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';

最后一个音符。如果从数据开始并过滤掉所有行,那么结果仍然是空的。得到 0 ,您需要一个额外的 COALESCE() :

SELECT COALESCE(SUM(COALESCE(x_col, 0) + COALESCE(y_col, 0)), 0)
FROM TEST_TABLE
WHERE Name = 'Jayden';
2q5ifsrm

2q5ifsrm2#

使用coalesce将null替换为0。

SELECT sum(coalesce(x_col, 0) + coalesce(y_col, 0)) FROM TEST_TABLE WHERE Name='Jay'

相关问题