У функции count есть еще одна форма - count(DISTINCT выражение). При такой форме записи функция вернет количество уникальных значений, при этом NULL значения по прежнему не учитываются. Например:
SELECT *
FROM table1
| value |
|---|
| 1 |
| 2 |
| 2 |
| 2 |
| 3 |
| 3 |
| NULL |
| NULL |
SELECT count(value) AS count_value,
count(DISTINCT value) AS count_distinct_value
FROM table1
| count_value | count_distinct_value |
|---|---|
| 6 | 3 |
Уникальными значениями value таблицы table1 являются 1, 2 и 3.