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ę |