Temat: Grupowanie wyników (GROUP BY)
GROUP BY to bardzo przydatna klauzula w SQL, która pozwala grupować rekordy w tabeli według jednej lub kilku kolumn. Dzięki GROUP BY możemy używać funkcji agregujących, takich jak COUNT, SUM, AVG, MIN i MAX, aby uzyskać podsumowania dla każdej grupy. Na przykład możemy policzyć liczbę uczniów w każdej klasie albo obliczyć całkowitą sprzedaż dla każdego produktu.
Składnia GROUP BY
GROUP BY jest używane razem z funkcjami agregującymi, aby pogrupować dane według określonych kolumn.
Podstawowa składnia:
SELECT kolumna, funkcja_agregująca(kolumna)
FROM tabela
GROUP BY kolumna;
W tej składni wybieramy kolumnę, według której chcemy grupować dane, a następnie stosujemy funkcję agregującą, aby uzyskać wyniki dla każdej grupy.
Przykłady Użycia GROUP BY
Przykład 1: Grupowanie uczniów według klasy
Przykład: Policz, ilu uczniów jest w każdej klasie.
SELECT klasa, COUNT(*) AS liczba_uczniow
FROM Uczen
GROUP BY klasa;
W tym przykładzie GROUP BY klasa grupuje wszystkich uczniów według ich klasy, a COUNT(*) liczy, ilu uczniów jest w każdej z tych klas. Wynik pokazuje liczbę uczniów w każdej klasie.
Przykład 2: Obliczanie średniej ceny produktów według kategorii
Przykład: Oblicz średnią cenę produktów w każdej kategorii.
SELECT kategoria, AVG(cena) AS srednia_cena
FROM Produkty
GROUP BY kategoria;
W tym przykładzie GROUP BY kategoria grupuje produkty według ich kategorii, a AVG(cena) oblicza średnią cenę produktów w każdej kategorii.
Przykład 3: Suma sprzedaży według produktu
Przykład: Oblicz całkowitą wartość sprzedaży dla każdego produktu.
SELECT nazwa_produktu, SUM(sprzedaz) AS calkowita_sprzedaz
FROM Sprzedaz
GROUP BY nazwa_produktu;
W tym przykładzie GROUP BY nazwa_produktu grupuje wszystkie rekordy według nazw produktów, a SUM(sprzedaz) oblicza całkowitą sprzedaż dla każdego z tych produktów.
Użycie GROUP BY z HAVING
Czasami po grupowaniu danych chcemy filtrować te grupy na podstawie wyników funkcji agregujących. Do tego służy klauzula HAVING. HAVING działa podobnie do WHERE, ale jest używana do filtrowania wyników po zastosowaniu GROUP BY.
Przykład: Znajdź kategorie produktów, które mają średnią cenę większą niż 50.
SELECT kategoria, AVG(cena) AS srednia_cena
FROM Produkty
GROUP BY kategoria
HAVING AVG(cena) > 50;
W tym przykładzie HAVING AVG(cena) > 50 filtruje grupy, aby pokazać tylko te kategorie, w których średnia cena produktu jest większa niż 50.
| Testy przypięte do lekcji | |
|---|---|
| Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |