COUNT(*)
считает все записи в группе.
COUNT(column_name)
учитывает только ненулевые значения.
Существует также другое типичное выражение, COUNT(DISTINCT column_name)
, которое считает ненулевые различные значения.
Так как вы просили об этом, вот демонстрация для DB Fiddlde:
with t as (
select 1 x from dual
union all select 1 from dual
union all select null from dual
)
select count(*), count(x), count(distinct x) from t
COUNT(*) | COUNT(X) | COUNT(DISTINCTX)
-------: | -------: | ---------------:
3 | 2 | 1