Посмотрим, сколько уникальных названий магазинов присутствует в таблице:
select
distinct storename
from
supermarket_inventory
Результат: 35.
Стоит обратить внимание на то, что одно из уникальных значений NULL
. Теперь выполним запрос для подсчета количества уникальных значений, как итога, через функцию COUNT()
:
select
count(distinct storename)
from
supermarket_inventory
Результат: 34.
Из вышесказанного можно сделать вывод, что функция COUNT()
не применяется к значениям NULL
. Это верно, но есть одно уточнение: функция count, когда в нее передан столбец, действительно не работает с NULL
. Однако, если выполнить запросы:
select
*
from
supermarket_inventory
select
count(*)
from
supermarket_inventory
То в обоих результатах мы получим 1 000 срок в таблице, включая одну с null.
Таким образом, правило гласит: агрегатные функции применяются для значений, не равных NULL
. Исключением является функция COUNT(*)
.
Давайте посчитаем количество уникальных значений в столбце storename
вместе с null значениями:
select
sum(distinct case when storename is null then 1 end) + count(distinct storename) as result
from
supermarket_inventory
Результат: 35.