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 BY zwija wiele wierszy o tej samej wartości w jeden wiersz, a COUNT(*) przelicza, ile pierwotnych wierszy znalazło się w danej grupie.

Wskazówka: W SELECT po GROUP BY możesz wybrać tylko te kolumny, po których grupujesz, LUB kolumny z funkcją agregującą (COUNT, AVG itp.).


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)AVG jest wewnątrz ROUND. Kolejność: najpierw oblicz AVG, 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) oraz MIN() i MAX() 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: WHERE odrzuca wiersze przed grupowaniem, natomiast HAVING odrzuca grupy po ich utworzeniu. Stosuj go zawsze, gdy musisz sprawdzić warunek dotyczący funkcji agregującej (np. COUNT lub SUM).
Klauzula Kiedy stosujemy
WHERE przed GROUP BY – filtruje pojedyncze rekordy
HAVING po GROUP BY – filtruje gotowe grupy

materiały: link