首页 > 解决方案 > 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 值。如何忽略此查询中为空的值?或者实际上一般来说,因为这对我的很多算法来说都是一个问题。

标签: sqlsum

解决方案


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

推荐阅读