Агрегатные функции игнорируют нулевые значения.Вот как определяется их поведение.
Итак, ответ на ваш вопрос: 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