COUNT(DISTINCT ...) w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

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:

IDtytul_plytywykonawca
1Czas jak rzekaCzesław Niemen
2IkonaStan Borys
3AerolitCzesław Niemen
4JourneyMikoł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.