
Jeśli kiedykolwiek pracowałeś z bazami danych w SQL, to na pewno spotkałeś się z klauzulą GROUP BY. Jest to jedno z podstawowych narzędzi służących do grupowania danych i stosowania funkcji agregujących. W tym artykule przyjrzymy się dokładnie, jak działa GROUP BY w języku SQL i zobaczymy konkretne przykłady jego zastosowania.
Co to jest GROUP BY i do czego służy?
Klauzula GROUP BY w SQL służy do grupowania wierszy w tabeli na podstawie jednej lub więcej kolumn. Pozwala to na stosowanie funkcji agregujących, takich jak:
SUM()– suma wartościAVG()– średnia wartośćCOUNT()– liczba wierszyMAX()– maksymalna wartośćMIN()– minimalna wartość
Dzięki temu możemy w łatwy sposób uzyskać skondensowane informacje z dużych zbiorów danych.
Podstawowy przykład użycia GROUP BY
Załóżmy, że mamy tabelę zamówienia z danymi o sprzedaży:
| id | klient | produkt | kwota |
|---|---|---|---|
| 1 | Jan Kowalski | Telewizor | 2500 |
| 2 | Anna Nowak | Laptop | 3200 |
| 3 | Jan Kowalski | Telefon | 1500 |
| 4 | Anna Nowak | Tablet | 1200 |
Jeśli chcemy policzyć, ile każdy klient wydał na zakupy, możemy użyć zapytania:
SELECT klient, SUM(kwota) AS suma_zamowien
FROM zamówienia
GROUP BY klient;
Wynik tego zapytania będzie wyglądać następująco:
| klient | suma_zamowien |
|---|---|
| Jan Kowalski | 4000 |
| Anna Nowak | 4400 |
GROUP BY z kilkoma kolumnami
Możemy również grupować według kilku kolumn jednocześnie. Przykładowo, jeśli chcemy zobaczyć ilość zamówień dla każdego klienta z podziałem na produkty, możemy użyć następującego zapytania:
SELECT klient, produkt, COUNT(*) AS liczba_zamowien
FROM zamówienia
GROUP BY klient, produkt;
Filtracja wyników za pomocą HAVING
Jeśli chcemy odfiltrować grupy w wynikowym zapytaniu, możemy użyć klauzuli HAVING. Na przykład, jeśli interesują nas tylko klienci, którzy wydali więcej niż 4000, napiszemy:
SELECT klient, SUM(kwota) AS suma_zamowien
FROM zamówienia
GROUP BY klient
HAVING SUM(kwota) > 4000;
W przeciwieństwie do WHERE, które filtruje dane przed wykonaniem GROUP BY, HAVING filtruje już zagregowane wyniki.
Częste błędy przy użyciu GROUP BY
Korzystając z GROUP BY, można popełnić kilka częstych błędów:
- Zapytanie z błędnym SELECT: Każda kolumna w
SELECT, która nie jest używana w funkcji agregującej, musi być określona wGROUP BY. Przykładowo, poniższe zapytanie będzie błędne:
SELECT klient, produkt, SUM(kwota) FROM zamówienia GROUP BY klient;
Błąd wynika z tego, że kolumna produkt nie znajduje się w GROUP BY, a nie jest również użyta w funkcji agregującej.
- Użycie WHERE zamiast HAVING: Jeśli filtrujemy dane po zagregowaniu, musimy używać
HAVINGzamiastWHERE.
Podsumowanie
Klauzula GROUP BY w SQL to potężne narzędzie pozwalające na grupowanie danych i ich agregację. Dzięki niej możemy uzyskiwać wartości sumaryczne, średnie, minimalne i maksymalne, jak również liczbę wystąpień poszczególnych kategorii. Warto pamiętać o zasadach jej poprawnego stosowania, aby uniknąć typowych błędów.
Inny ciekawy artykuł:
Jak działa WHERE w języku SQL? Przykłady zastosowania
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

