COUNT(DISTINCT ...) w SQL
COUNT(DISTINCT kolumna) to konstrukcja SQL służąca do zliczania liczby różnych, niepowtarzających się wartości w podanej kolumnie.
Nie liczy wszystkich rekordów, lecz tylko unikalne wartości. Jest często używana wtedy, gdy chcemy sprawdzić np. ilu różnych autorów, klientów, wykonawców lub kategorii występuje w tabeli.
Składnia
SELECT COUNT(DISTINCT nazwa_kolumny)
FROM nazwa_tabeli;
Przykład
Dla tabeli muzyka:
| ID | tytul_plyty | wykonawca |
|---|---|---|
| 1 | Czas jak rzeka | Czesław Niemen |
| 2 | Ikona | Stan Borys |
| 3 | Aerolit | Czesław Niemen |
| 4 | Journey | Mikołaj Czechowski |
Zapytanie:
SELECT COUNT(DISTINCT wykonawca)
FROM muzyka;
zwróci:
3
ponieważ w kolumnie wykonawca występują trzy różne wartości:
Czesław Niemen,Stan Borys,Mikołaj Czechowski.
Wartość Czesław Niemen pojawia się dwa razy, ale zostaje policzona tylko raz.
Różnica między COUNT(*) a COUNT(DISTINCT ...)
SELECT COUNT(*) FROM muzyka;
zlicza wszystkie wiersze w tabeli, więc w przykładzie zwróci 4.
SELECT COUNT(DISTINCT wykonawca) FROM muzyka;
zlicza tylko różne wartości w kolumnie wykonawca, więc zwróci 3.
Ważne na egzaminie
Jeśli w pytaniu pojawia się DISTINCT, należy usunąć powtórzenia przed zliczeniem. Dopiero potem funkcja COUNT() podaje liczbę pozostałych unikalnych wartości.