TrudnyWaga: 4-6 pkt

Kwerendy agregujące i GROUP BY

Zrozum, jak podsumowywać dane na maturze. Opanuj funkcje SUM, COUNT, AVG i przestań tracić punkty na myleniu WHERE z HAVING. To największa pułapka CKE!

  1. Kwerendy podsumowujące – o co w tym chodzi?

Zapomnij o zwykłym "wyświetlaniu tabelek". Na maturze liczy się analiza danych. Bądźmy szczerzy – CKE rzadko prosi o suchą listę uczniów. Zamiast tego zapyta o:

  • Średnią ocen w konkretnej klasie,
  • Łączną ilość wypożyczonych książek przez danego czytelnika,
  • Najwyższy wynik zdobyty w zawodach międzyszkolnych.

💡 Pro-tip: MS Access

W MS Access odpalisz te funkcje jednym kliknięciem! Szukaj w menu (widok projektu) ikony greckiej litery Σ (Suma/Podsumowanie). Zmieni ona zwykłe zapytanie w potężne narzędzie statystyczne.

  1. Wielka piątka (Twój maturalny arsenał)

Większość obliczeń opiera się na jednym z tych pięciu fundamentów (w nawiasach angielskie komendy z SQL):

➕ SUMA (SUM)

Sumuje wartości liczbowe z kolumny.

Np. łączna waga przesyłek na poczcie.

🔢 POLICZ (COUNT)

Zlicza wiersze w tabeli.

COUNT(*) liczy wszystko
COUNT(kol) ignoruje NULL

📊 ŚREDNIA (AVG)

Wylicza klasyczną średnią arytmetyczną podanych wartości. Automatycznie radzi sobie z pustymi polami.

📉 MIN / MAX

Wyciąga wartości skrajne z danego zbioru.

Działa na liczbach, datach (chronologicznie) i tekście (alfabetycznie).

  1. GROUP BY – Zróbmy z tego "paczki"

Jeśli użyjesz komendy SUM(Punkty), baza wypluje Ci jedną, wielką liczbę dla całej tabeli. Ale co, jeśli arkusz krzyczy: "Podaj sumę punktów DLA KAŻDEGO zespołu z osobna"?

Wkracza Grupowanie!

Używasz komendy GROUP BY nazwa_zespolu. SQL bierze Twoje dane, dzieli je na odrębne "paczki" (zespoły) i dopiero wewnątrz każdej z nich odpala sumowanie.

⚠️ ŻELAZNA ZASADA: Każda kolumna z SELECT, która nie siedzi wewnątrz funkcji (jak SUM/AVG), absolutnie MUSI znaleźć się w GROUP BY. Inaczej dostaniesz błąd!

  1. WHERE czy HAVING? Tutaj padają maturalne marzenia!

Zrozumienie tej różnicy to gwarancja cennych punktów. Obie komendy filtrują dane, ale robią to w zupełnie różnym czasie:

🛡️ WHERE

Bramkarz w klubie

Działa PRZED grupowaniem. Odrzuca pojedyncze, surowe wiersze jeszcze zanim cokolwiek policzymy.

👉 "Wyrzuć z bazy książki wydane przed 2010 rokiem."

⚖️ HAVING

Sędzia po zawodach

Działa PO pogrupowaniu. Filtruje całe "paczki" na podstawie wyników funkcji agregujących (np. SUM, AVG).

👉 "Zostawiamy tylko klasy, w których średnia jest wyższa niż 4.0."

  1. Klasyczny "Pewniak" w praktyce

Mamy dwie tabele: Zespoly (ID_zespolu, Nazwa) oraz Zawodnicy (ID_zawodnika, Imie, ID_zespolu, Punkty, Wiek). Zobaczmy, jak poradzić sobie z typowym poleceniem CKE.

Zadanie

Polecenie z arkusza:

"Dla każdego zespołu podaj jego nazwę oraz sumę zdobytych przez niego punktów. W zestawieniu weź pod uwagę tylko pełnoletnich zawodników. Wyświetl tylko te zespoły, których łączna suma punktów z zachowaniem powyższych warunków wynosi więcej niż 1000."

Zapisz kolejne kroki budowania kwerendy SQL.
💡 Pokaż rozwiązanie krok po kroku
  • 1

    Krok 1: Filtrowanie surowych danych (WHERE)

    Zanim cokolwiek policzymy, musimy odrzucić z bazy osoby niepełnoletnie. Używamy tu klauzuli WHERE, ponieważ warunek Wiek18Wiek \ge 18 dotyczy pojedynczych wierszy w tabeli zawodników (przed grupowaniem).

  • 2

    Krok 2: Grupowanie i Agregacja (GROUP BY)

    Teraz, gdy mamy na liście już tylko dorosłych, dzielimy ich na zespoły. Używamy polecenia GROUP BY Zespoly.Nazwa, a następnie na każdej grupie wykonujemy naszą funkcję sumującą zdobyte punkty.

  • 3

    Krok 3: Filtrowanie zagregowanych wyników (HAVING)

    Arkusz wymaga, by odrzucić słabe zespoły. Ponieważ warunek matematyczny Punkty>1000\sum Punkty > 1000 odnosi się do wyniku funkcji na całej grupie, musimy użyć sędziego, czyli komendy HAVING.

  • 4

    Krok 4: Złożenie gotowego kodu SQL

    SELECT Zespoly.Nazwa, SUM(Zawodnicy.Punkty) AS Suma_Punktow
    FROM Zespoly
    INNER JOIN Zawodnicy ON Zespoly.ID_zespolu = Zawodnicy.ID_zespolu
    WHERE Zawodnicy.Wiek >= 18
    GROUP BY Zespoly.Nazwa
    HAVING SUM(Zawodnicy.Punkty) > 1000;

Nadal czujesz się niepewnie?

To tylko jeden z pewniaków. Na kursie przechodzimy przez nie wszystkie, krok po kroku, aż poczujesz ten spokój.

Pomóżcie mi zdać maturę!