Når du select distinct count(id)
så laver du som udgangspunkt:
select distinct cnt
from (select count(id) as cnt from t) t;
Fordi den indre forespørgsel kun returnerer én række, den distinct
laver ikke noget. Forespørgslen tæller antallet af rækker i tabellen (nå, mere præcist, antallet af rækker hvor id
er ikke null
).
På den anden side, når du gør:
select count(distinct id)
from t;
Derefter tæller forespørgslen antallet af forskellige værdier, der id
tager fat i tabellen. Dette ser ud til at være det, du ønsker.