W języku SQL klauzula GROUP BY służy do tego, aby
A. połączyć dane z dwóch tabel pozostających w relacji.
Źle. Tabele łączy
JOIN z warunkiem ON.B. zdefiniować klucz obcy dla tabeli.
Źle. Klucz obcy definiuje się przez
FOREIGN KEY w strukturze tabeli.C. pogrupować wiersze o tych samych wartościach wskazanej kolumny, na przykład aby obliczyć funkcję agregującą dla każdej grupy.
Dobrze.
GROUP BY tworzy grupy, a funkcje agregujące liczą wynik dla każdej z nich.D. posortować wiersze wyniku.
Źle. Sortowanie wykonuje
ORDER BY.Klauzula
GROUP BY łączy w grupy wiersze, które mają tę samą wartość we wskazanej kolumnie. Najczęściej używa się jej razem z funkcjami agregującymi, takimi jak COUNT(), SUM(), AVG(), MIN() i MAX(), które liczą wynik osobno dla każdej grupy. Zapytanie SELECT klasa, COUNT(*) FROM uczniowie GROUP BY klasa; zwróci liczbę uczniów w każdej klasie. Do zapamiętania: WHERE filtruje wiersze przed grupowaniem, a HAVING filtruje gotowe grupy, na przykład HAVING COUNT(*) > 20. Kolumny w SELECT powinny być albo w GROUP BY, albo wewnątrz funkcji agregującej. Wynik zawiera jeden wiersz na każdą grupę.Każdy z błędnych wariantów opisuje inną klauzulę lub polecenie SQL. Sortowanie wyniku to zadanie
ORDER BY - porządkuje wiersze rosnąco (ASC) lub malejąco (DESC), ale niczego nie grupuje. Klucz obcy definiuje się w CREATE TABLE albo ALTER TABLE słowami FOREIGN KEY ... REFERENCES, czyli przy budowie struktury tabeli, a nie w zapytaniu wybierającym dane. Łączenie danych z tabel powiązanych relacją wykonuje JOIN z warunkiem ON. GROUP BY często pojawia się obok JOIN i ORDER BY w jednym zapytaniu, stąd pomyłki, ale jego rola to wyłącznie grupowanie wierszy o jednakowych wartościach. Kolejność tych klauzul w zapytaniu jest stała: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY. Zapamiętanie tej kolejności ułatwia też odczytanie, co dane zapytanie robi. Dlatego klauzule te często występują razem w jednym zapytaniu.