Нулевое значение с совокупной суммой? - PullRequest
0 голосов
/ 01 октября 2018

Запрос выполняет суммирование по одному столбцу таблицы с 10 кортежами.Если ровно один из кортежей имеет значение NULL в этом столбце, что произойдет из следующего:

  1. Запрос вернет NULL.
  2. Запрос вернет сумму оставшихся9 значений.
  3. Запрос выдаст исключение.

Это будет 3?

1 Ответ

0 голосов
/ 01 октября 2018

Агрегатные функции игнорируют нулевые значения.Вот как определяется их поведение.

Итак, ответ на ваш вопрос: 2)

Вы можете легко проверить это самостоятельно:

create table test_null(value integer);
insert into test_null
values (1),(1),(1),(1),(1),(1),(1),(1),(1),(null);

select sum(value)
from test_null;

Возвращает

sum
---
  9

«Игнорирование» более очевидно при использовании агрегатной функции avg().Результат для вышеуказанных тестовых данных - 1, а не 0,9, как можно подумать.Это потому, что агрегаты игнорируют строки с нулевыми значениями, и поэтому среднее значение вычисляется как 9/9.

select avg(value)
from test_null;

эквивалентно:

select avg(value)
from test_null
WHERE value IS NOT NULL;

Онлайн пример: http://rextester.com/QQREJS70393

...