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:
| plec | AVG(zarobek) |
|---|---|
| k | 5200 |
| m | 6100 |
Ważne zasady
GROUP BY plectworzy osobne grupy dla każdej wartości w kolumnieplec.AVG(zarobek)liczy średnią w każdej grupie osobno.- Jeśli w
SELECTpodaje się zwykłą kolumnę razem z funkcją agregującą, ta kolumna zwykle powinna znaleźć się wGROUP 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.