Przejdź do głównej treści

GROUP BY w SQL

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

Co to jest GROUP BY w SQL?

GROUP BY to klauzula SQL służąca do grupowania rekordów według jednej lub kilku kolumn. Najczęściej używa się jej razem z funkcjami agregującymi, takimi jak COUNT(), SUM(), AVG(), MIN() i MAX().

GROUP BY nie jest tym samym co DISTINCT. Obie klauzule mogą sprawić, że w wyniku pojawią się unikalne wartości, ale mają inne zastosowanie.

Przykład

SELECT klasa, COUNT(*) AS liczba_uczniow
FROM uczniowie
GROUP BY klasa;

Zapytanie pogrupuje uczniów według klasy i policzy, ilu uczniów jest w każdej klasie.

Przykładowy wynik:

klasa | liczba_uczniow
3A    | 24
3B    | 21
4A    | 19

GROUP BY z wieloma kolumnami

SELECT klasa, plec, COUNT(*)
FROM uczniowie
GROUP BY klasa, plec;

W tym przypadku rekordy zostaną pogrupowane według klasy oraz płci.

Różnica między GROUP BY a DISTINCT

SELECT DISTINCT klasa
FROM uczniowie;

To zapytanie pokaże unikalne klasy.

SELECT klasa, COUNT(*)
FROM uczniowie
GROUP BY klasa;

To zapytanie nie tylko pokaże klasy, ale także policzy rekordy w każdej grupie.

Ważne na egzaminie

Jeśli pytanie mówi o danych „zgrupowanych według pola”, chodzi o GROUP BY, a nie o DISTINCT.