SQL SUM, чтобы игнорировать значение NULL - PullRequest
0 голосов
/ 29 мая 2020

У меня есть следующая таблица TEST_TABLE:

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

Это упрощенное c представление гораздо более крупной проблемы, но его будет достаточно.

Когда я выполняю следующий запрос, я get NULL возвращено

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

Я хочу, чтобы это было 2. Я думал, что метод SUM() игнорирует значения NULL. Как я могу игнорировать нулевые значения в этом запросе? Или вообще, поскольку это проблема многих моих алгоритмов.

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы получаете 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';
0 голосов
/ 29 мая 2020

Используйте COALESCE для замены NULL на 0.

SELECT sum(coalesce(x_col, 0) + coalesce(y_col, 0)) FROM TEST_TABLE WHERE Name='Jay'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...