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 |