Cuando lo haga select distinct count(id)
entonces básicamente estás haciendo:
select distinct cnt
from (select count(id) as cnt from t) t;
Debido a que la consulta interna solo devuelve una fila, distinct
no esta haciendo nada La consulta cuenta el número de filas en la tabla (bueno, más exactamente, el número de filas donde id
no es null
).
Por otro lado, cuando haces:
select count(distinct id)
from t;
Luego, la consulta cuenta la cantidad de valores diferentes que id
asume en la mesa. Esto parece ser lo que quieres.