Agregacja i grupowanie danych w SQL

1. Czym jest agregacja?

Agregacja to proces łączenia wielu rekordów w jedną wartość wynikową — np. obliczanie średniej ocen, sumy zarobków nauczycieli czy liczby uczniów w klasie.

Do tego służą funkcje agregujące, które działają na zestawach danych (grupach rekordów).


2. Najczęściej używane funkcje agregujące

Funkcja Działanie Przykład (opis)
COUNT() Liczy rekordy Liczba uczniów w każdej klasie
SUM() Sumuje wartości Suma zarobków nauczycieli
AVG() Średnia wartość Średnia ocen ucznia lub przedmiotu
MIN() Najmniejsza wartość Najniższa ocena z matematyki
MAX() Największa wartość Najwyższe zarobki nauczyciela

3. Klauzula GROUP BY

Klauzula GROUP BY służy do pogrupowania danych według jednej lub kilku kolumn. Po pogrupowaniu można użyć funkcji agregujących, aby uzyskać wyniki dla każdej grupy.

Składnia:


Przykłady z bazy ZarzadzanieSzkola


Przykład 1. Liczba uczniów w każdej klasie

Wynik: pokazuje, ilu uczniów jest w każdej klasie (np. 2 uczniów w 1A, 2 uczniów w 2A itd.).


Przykład 2. Suma i średnia zarobków nauczycieli

Wynik: oblicza średnie oraz łączne zarobki wszystkich nauczycieli w szkole.


Przykład 3. Średnia ocen z każdego przedmiotu

Wynik: pokazuje, które przedmioty mają najwyższą lub najniższą średnią ocen.


Przykład 4. Średnia ocen każdego ucznia

Wynik: zestawienie uczniów od najlepszego do najsłabszego na podstawie średniej ocen.


Przykład 5. Średnia ocen w każdej klasie

Wynik: pokazuje, która klasa ma najwyższą średnią ocen.


Przykład 6. Średnia ocen uczniów dla każdego nauczyciela (wg przedmiotu)

Wynik: pokazuje, jak uczniowie radzą sobie z przedmiotem każdego nauczyciela.


Przykład 7. Liczba ocen wystawionych każdego dnia

Wynik: pokazuje aktywność oceniania — ile ocen wprowadzono w poszczególnych dniach.


8. Grupowanie wielopoziomowe (więcej niż jedna kolumna)

Możemy grupować po dwóch kolumnach naraz.

Przykład:

Średnia ocen z każdego przedmiotu w każdej klasie:

Wynik: dokładne zestawienie średnich ocen z poszczególnych przedmiotów w każdej klasie.


9. Filtracja grup przy pomocy HAVING

Klauzula HAVING działa podobnie do WHERE, ale dla wyników po grupowaniu.

Przykład:

Pokaż tylko klasy, w których średnia ocen jest większa niż 4.5:


10. Zastosowanie agregacji w podzapytaniach

Czasem funkcje agregujące występują wewnątrz innych zapytań, np. do znalezienia najlepszego ucznia:

Wynik: zwraca ucznia (lub uczniów) z najwyższą średnią ocen.


Podsumowanie

Kluczowe pojęcie Opis
Funkcje agregujące Umożliwiają podsumowanie danych (np. AVG, SUM, COUNT, MAX, MIN)
GROUP BY Grupuje dane wg kolumn
HAVING Filtruje wyniki po agregacji
ORDER BY Uporządkowuje wynik końcowy
JOIN + GROUP BY Pozwala analizować dane z wielu tabel naraz