
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ć
HAVING
zamiastWHERE
.
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, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.