GROUP BY w SQL

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

GROUP BY służy do grupowania wierszy według wartości jednej lub kilku kolumn. Najczęściej używa się go razem z funkcjami agregującymi, np. AVG(), COUNT(), SUM(), MIN(), MAX().

Dzięki GROUP BY można obliczyć wynik osobno dla każdej grupy danych, np. średni zarobek osobno dla kobiet i mężczyzn.

Składnia

SELECT kolumna_grupujaca, funkcja_agregujaca(kolumna)
FROM tabela
GROUP BY kolumna_grupujaca;

Przykład

Tabela pracownicy zawiera kolumny: id, imie, nazwisko, plec, zarobek.

Aby obliczyć średnie wynagrodzenie osobno dla każdej płci:

SELECT plec, AVG(zarobek)
FROM pracownicy
GROUP BY plec;

Wynik może wyglądać tak:

plecAVG(zarobek)
k5200
m6100

Ważne zasady

  • GROUP BY plec tworzy osobne grupy dla każdej wartości w kolumnie plec.
  • AVG(zarobek) liczy średnią w każdej grupie osobno.
  • Jeśli w SELECT podaje się zwykłą kolumnę razem z funkcją agregującą, ta kolumna zwykle powinna znaleźć się w GROUP BY.

Częsty błąd

Warunek:

WHERE plec = 'k' AND plec = 'm'

jest logicznie niemożliwy, bo jedna wartość w tym samym wierszu nie może być jednocześnie równa 'k' i 'm'. Do osobnego podziału wyników należy użyć GROUP BY, a nie AND.