Jak działa GROUP BY w języku SQL? Przykłady zastosowania

Jak działa GROUP BY w języku SQL? Przykłady zastosowania

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ści
  • AVG() – średnia wartość
  • COUNT() – liczba wierszy
  • MAX() – 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:

  1. Zapytanie z błędnym SELECT: Każda kolumna w SELECT, która nie jest używana w funkcji agregującej, musi być określona w GROUP 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.

  1. Użycie WHERE zamiast HAVING: Jeśli filtrujemy dane po zagregowaniu, musimy używać HAVING zamiast WHERE.

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

KajoDataSpace