У функции 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.