Grupowanie – GROUP BY i HAVING
W tym odcinku nauczysz się grupować dane i obliczać statystyki: liczyć rekordy, sumować, wyznaczać średnią, minimum i maksimum. To zestaw wzorców, który pojawia się na każdym egzaminie INF.03.
Zadanie 1: GROUP BY + COUNT – zestawienie z liczbą
- Cel: Grupowanie rekordów w unikalne zbiory.
- Logika:
GROUP BYzwija wiele wierszy o tej samej wartości w jeden wiersz, aCOUNT(*)przelicza, ile pierwotnych wierszy znalazło się w danej grupie.
Wskazówka: W
SELECTpoGROUP BYmożesz wybrać tylko te kolumny, po których grupujesz, LUB kolumny z funkcją agregującą (COUNT,AVGitp.).
Zadanie 2: AVG i ROUND – średnia zaokrąglona
- Cel: Obliczanie sformatowanej średniej.
- Wzorzec:
ROUND(AVG(kolumna), 2). Pamiętaj: najpierw SQL wylicza środek (średnią), a potem „wycina” nadmiar miejsc po przecinku (zaokrągla).
Wskazówka:
ROUND(AVG(kolumna), 2)–AVGjest wewnątrzROUND. Kolejność: najpierw obliczAVG, potem zaokrąglij.
Zadanie 3: SUM, MIN, MAX
- Cel: Wyznaczanie statystyk zbioru danych.
- Zasada: Używaj
SUM()do dodawania wartości w kolumnie (np. pieniądze, sztuki) orazMIN()iMAX()do znajdowania najniższych i najwyższych wartości (np. daty, ceny, oceny).
Zadanie 4: HAVING – filtrowanie po grupowaniu
- Cel: Filtrowanie zagregowanych wyników za pomocą
HAVING. - Logika:
WHEREodrzuca wiersze przed grupowaniem, natomiastHAVINGodrzuca grupy po ich utworzeniu. Stosuj go zawsze, gdy musisz sprawdzić warunek dotyczący funkcji agregującej (np.COUNTlubSUM).
| Klauzula | Kiedy stosujemy |
|---|---|
WHERE |
przed GROUP BY – filtruje pojedyncze rekordy |
HAVING |
po GROUP BY – filtruje gotowe grupy |
materiały: link