NULL значения в агрегатных функциях обрабатываются по особому - они игнорируются. Поэкспериментируем на таблице:
SELECT *
FROM table1
| value |
|---|
| 1 |
| 2 |
| 3 |
| NULL |
Получим минимальное и максимальное значение:
SELECT min(value) as min_value,
max(value) as max_value
FROM table1
| min_value | max_value |
|---|---|
| 1 | 3 |
Исключением является функция count(*), возвращающая общее количество строк в выборке. count(*) не принимает на вход никакого выражения, а просто возвращает количество строк в выборке, независимо от наличия NULL значений. Чтобы посчитать количество не NULL значений в столбце, необходимо воспользоваться функцией count(выражение). Например:
SELECT count(value) as count_value,
count(*) as count_rows
FROM table1
| count_value | count_rows |
|---|---|
| 3 | 4 |