Group By SQL – co to? Jak działa i do czego służy?
W pracy z bazami danych często chcemy podsumować informacje, np. policzyć liczbę zamówień dla każdego klienta lub obliczyć średnią pensję w firmie. Właśnie tutaj przychodzi z pomocą klauzula GROUP BY w SQL!
Group By SQL – co to właściwie jest?
GROUP BY to klauzula SQL, która pozwala grupować dane na podstawie jednej lub kilku kolumn. Dzięki temu możemy wykonywać operacje agregujące, takie jak SUM, AVG, COUNT, MIN czy MAX na podgrupach danych, a nie na całej tabeli.
Najczęstsze zastosowania GROUP BY to:
- Liczenie liczby rekordów w grupach (np. liczba klientów w każdym mieście).
- Obliczanie sumy wartości w grupach (np. łączna sprzedaż dla każdego sprzedawcy).
- Wyznaczanie wartości minimalnych i maksymalnych w ramach grup.
Group By SQL – co to przykłady
Załóżmy, że mamy tabelę zamowienia o następującej strukturze:
+----+-----------+---------+-------+ | id | klient | produkt | cena | +----+-----------+---------+-------+ | 1 | Jan Kowal | Laptop | 3000 | | 2 | Anna Nowak| Telefon | 1500 | | 3 | Jan Kowal | Telefon | 2000 | | 4 | Anna Nowak| Laptop | 3200 | | 5 | Piotr Lis | Laptop | 3100 | +----+-----------+---------+-------+
Jeśli chcemy policzyć, ile zamówień złożył każdy klient, używamy GROUP BY:
SELECT klient, COUNT(*) AS liczba_zamowien FROM zamowienia GROUP BY klient;
Wynik:
+-----------+----------------+ | klient | liczba_zamowien | +-----------+----------------+ | Jan Kowal | 2 | | Anna Nowak| 2 | | Piotr Lis | 1 | +-----------+----------------+
Obliczanie sumy wartości zamówień
Aby dowiedzieć się, ile dany klient wydał na zakupy, możemy użyć SUM:
SELECT klient, SUM(cena) AS laczna_kwota FROM zamowienia GROUP BY klient;
Wynik:
+-----------+-------------+ | klient | laczna_kwota | +-----------+-------------+ | Jan Kowal | 5000 | | Anna Nowak| 4700 | | Piotr Lis | 3100 | +-----------+-------------+
Filtracja wyników z HAVING
GROUP BY często idzie w parze z HAVING, który pozwala filtrować grupy po agregowanych wartościach. Przykładowo, jeśli chcemy zobaczyć tylko tych klientów, którzy wydali więcej niż 4000 zł:
SELECT klient, SUM(cena) AS laczna_kwota FROM zamowienia GROUP BY klient HAVING SUM(cena) > 4000;
Wynik:
+-----------+-------------+ | klient | laczna_kwota | +-----------+-------------+ | Jan Kowal | 5000 | | Anna Nowak| 4700 | +-----------+-------------+
Grupowanie według kilku kolumn
Możemy też grupować dane według więcej niż jednej kolumny, np. zobaczyć, ile zamówień złożył każdy klient na każdy produkt:
SELECT klient, produkt, COUNT(*) AS liczba_zamowien FROM zamowienia GROUP BY klient, produkt;
Wynik:
+-----------+---------+----------------+ | klient | produkt | liczba_zamowien | +-----------+---------+----------------+ | Jan Kowal | Laptop | 1 | | Jan Kowal | Telefon | 1 | | Anna Nowak| Telefon | 1 | | Anna Nowak| Laptop | 1 | | Piotr Lis | Laptop | 1 | +-----------+---------+----------------+
Podsumowanie
GROUP BY to potężne narzędzie w SQL, które pozwala grupować dane i wykonywać na nich operacje agregujące. Dzięki temu możemy analizować dane w prosty i czytelny sposób.
Najważniejsze rzeczy, które warto zapamiętać:
- GROUP BY działa z funkcjami agregującymi (COUNT, SUM, AVG itp.).
- HAVING pozwala filtrować wyniki grupowania.
- Można grupować według więcej niż jednej kolumny.
Teraz, gdy już wiesz, czym jest GROUP BY SQL, możesz śmiało stosować tę klauzulę w swoich zapytaniach i analizować dane jak profesjonalista!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!