Matura z informatyki · SQL

SQL na maturze: złączenia i grupowanie

SQL na maturze — złączenia i grupowanie — Cognito, korepetycje online

Zadania z baz danych to najbardziej schematyczna część matury z informatyki. Kilka konstrukcji, jedna stała kolejność klauzul — i punkty, które można zdobyć nawet przy słabszym programowaniu.

Umów pierwszą lekcję (60 zł) 60 minut 1:1 · Lekcja diagnostyczna: 60 zł · regularna lekcja: 119 zł / 60 min · ocena 5,0 na e-korepetycje.net

Ćwiczysz na oficjalnych arkuszach? Zobacz rozwiązania zadań z baz danych CKE oraz sprawdź swoje umiejętności w kalkulatorze punktów maturalnych.

Jak zbudowane jest zadanie z bazy danych — cztery arkusze pod rząd

Zadanie bazodanowe to 9–10 z 50 punktów i w arkuszach 2023–2026 ma za każdym razem tę samą konstrukcję. Przejrzeliśmy je wszystkie i wzorzec jest zaskakująco sztywny.

Rok Zadanie Pliki źródłowe Pkt
2026Sieć sklepówklienci, transakcje, opis_transakcji9
2025Poszukiwanie wody na Marsielaziki, obszary, pomiary10
2024Rejestr wykroczeńkierowcy, taryfikator, rejestr (średnik!)9
2023Gry planszowegry, gracze, oceny10

Trzy rzeczy, które powtórzyły się we wszystkich czterech latach

  1. Zawsze trzy pliki tekstowe z wierszem nagłówkowym. Importujesz je jako trzy tabele i sam ustalasz klucze oraz relacje. Separator nie zawsze jest tabulatorem — w 2024 był średnik. Sprawdź go, zanim zaczniesz import, bo źle wczytana kolumna psuje wszystkie kolejne podpunkty.
  2. Zawsze przynajmniej jedno pytanie „kto nie”. 2023: gracze, którzy nie posiadają żadnej z ocenianych gier. 2024: właściciele, którzy nie figurują w rejestrze. 2025: obszary, na których żaden łazik nie wykonał pomiaru. 2026: klienci, którzy nic nie kupili. To jest złączenie zewnętrzne albo podzapytanie z NOT IN — i to na nim najczęściej traci się punkty, bo INNER JOIN z definicji nie pokaże wierszy, których szukasz.
  3. Ostatni podpunkt zawsze dokłada nową tabelę do schematu. 2023 tabela sklep, 2024 Fotoradar, 2025 Producent, 2026 Produkty. Zadanie sprawdza, czy potrafisz podpiąć nową relację do istniejącego modelu, a nie tylko napisać zapytanie do gotowego.

Wzorzec zapytania „kto nie” — naucz się obu wersji:

-- wersja z LEFT JOIN
SELECT k.Imie, k.Nazwisko
FROM klienci k
LEFT JOIN transakcje t ON t.IdKlienta = k.IdKlienta
WHERE t.IdKlienta IS NULL;

-- wersja z NOT IN
SELECT Imie, Nazwisko
FROM klienci
WHERE IdKlienta NOT IN (SELECT IdKlienta FROM transakcje);

Pełna punktacja zadanie po zadaniu dla tych arkuszy jest w mapie arkuszy CKE 2023–2026, a oryginały na stronie CKE. Analizę wykonaliśmy 2 września 2026 r.

1. Szablon i kolejność klauzul w zapytaniu SELECT

Kolejność słów kluczowych w SQL jest bezwzględnie stała. Każde zadanie maturalne z baz danych można ułożyć według poniższego schematu:

SELECT kolumny_lub_agregacje
FROM tabela_glowna
JOIN tabela_druga ON tabela_glowna.klucz_obcy = tabela_druga.id
WHERE warunek_filtrowania_pojedynczych_wierszy
GROUP BY kolumny_nieagregowane
HAVING warunek_na_wynik_funkcji_agregujacej (np. COUNT(*) > 5)
ORDER BY kolumna_do_sortowania ASC|DESC;

2. Złączenia tabel: INNER JOIN vs LEFT JOIN

W 90% zadań CKE stosuje się INNER JOIN. Jeśli jednak zadanie pyta o „uczniów, którzy nie wzięli udziału w żadnym konkursie” lub „wszystkie produkty wraz z informacją o sprzedaży (również te niesprzedane)”, musisz użyć LEFT JOIN:

-- Standardowe złączenie INNER JOIN
SELECT u.Imie, u.Nazwisko, k.NazwaKlasy
FROM Uczniowie u
INNER JOIN Klasy k ON u.IdKlasy = k.Id;

-- LEFT JOIN do znajdowania braków (rekordy bez dopasowania)
SELECT u.Imie, u.Nazwisko
FROM Uczniowie u
LEFT JOIN Wypozyczenia w ON u.IdUcznia = w.IdUcznia
WHERE w.IdWypozyczenia IS NULL;

3. Łączenie 3 tabel w jednym zapytaniu

Częsta struktura CKE to relacja N:M z tabelą pośredniczącą (np. Uczniowie — Zgloszenia — Konkursy):

SELECT u.Nazwisko, k.NazwaKonkursu, z.Punkty
FROM Zgloszenia z
JOIN Uczniowie u ON z.IdUcznia = u.Id
JOIN Konkursy k ON z.IdKonkursu = k.Id
WHERE z.Punkty >= 80
ORDER BY z.Punkty DESC;

4. Grupowanie GROUP BY i funkcje agregujące

Kluczowa zasada SQL: Każda kolumna, która pojawia się w klauzuli SELECT i nie jest objęta funkcją agregującą (COUNT, SUM, AVG, MIN, MAX), MUSI znaleźć się w GROUP BY.

SELECT k.NazwaKlasy, COUNT(u.Id) AS LiczbaUczniow, ROUND(AVG(u.SredniaOcen), 2) AS SredniaKlasy
FROM Uczniowie u
JOIN Klasy k ON u.IdKlasy = k.Id
GROUP BY k.NazwaKlasy
ORDER BY SredniaKlasy DESC;

5. HAVING: filtrowanie grup vs filtrowanie WHERE

Zapamiętaj: WHERE filtruje rekordy PRZED podziałem na grupy (nie może zawierać funkcji agregujących), a HAVING filtruje grupy PO ich utworzeniu:

SELECT k.Kategoria, COUNT(*) AS LiczbaProduktow, SUM(p.Cena) AS Wartosc
FROM Produkty p
JOIN Kategorie k ON p.IdKategorii = k.Id
WHERE p.Dostepny = 1           -- WHERE: tylko produkty dostępne na magazynie
GROUP BY k.Kategoria
HAVING COUNT(*) >= 10          -- HAVING: tylko kategorie z co najmniej 10 produktami
ORDER BY Wartosc DESC;

6. Podzapytania (Subqueries) na maturze

Przydatne, gdy musisz porównać rekordy ze średnią całej tabeli:

SELECT Imie, Nazwisko, Wynik
FROM Kandydaci
WHERE Wynik > (SELECT AVG(Wynik) FROM Kandydaci)
ORDER BY Wynik DESC;

7. Najczęstsze błędy i pułapki egzaminacyjne CKE

  • Brak klucza obcego w JOIN: Połączenie tabel przecinkiem w FROM tabela1, tabela2 bez warunku w WHERE tworzy iloczyn kartezjański i błędne setki tysięcy rekordów.
  • Mylenie WHERE z HAVING: Próba napisania WHERE COUNT(*) > 5 wyrzuca błąd składni.
  • Brak aliasów przy niejednoznacznych nazwach: Jeśli obie tabele mają kolumnę Id lub Nazwa, musisz pisać t1.Nazwa, t2.Nazwa.
  • Format zapisu do pliku: Zapisuj odpowiedzi wraz z nagłówkami zadań (np. Zadanie 5.1) w czytelnej strukturze.

Chcesz przećwiczyć kwerendy na gotowych bazach maturalnych?

Przejrzyj nasze pełne omówienia arkuszy lub umów lekcję diagnostyczną 1:1, na której przećwiczysz import tabel i zapytania wielotabelowe.

Lekcja diagnostyczna

Umów pierwszą lekcję (60 zł)

Pełne 60 minut 1:1. Pierwsza lekcja diagnostyczna kosztuje 60 zł za 60 minut. Płatność następuje po lekcji; nie wymagamy karty. Wybierz, jak wolisz zacząć.

Zostaw kontakt, oddzwonimy

Nie chcesz teraz wybierać godziny? Zostaw numer, ustalimy termin przez telefon.

Twój numer jest bezpieczny. Odpowiadamy w ciągu 2-4 godzin.

Najczęstsze pytania

WHERE filtruje pojedyncze wiersze przed grupowaniem, HAVING filtruje gotowe grupy po agregacji.
W większości zadań tak. Warto jednak wiedzieć, czym różni się od LEFT JOIN, bo bywa to elementem zadania teoretycznego.
Uruchom je i porównaj liczbę oraz sens wyników z treścią zadania. Nienaturalnie duża liczba wierszy zwykle oznacza błąd w warunku złączenia.

Chcesz przećwiczyć zapytania na maturalnej bazie?

Na lekcji diagnostycznej za 60 zł rozwiążemy razem zadanie z bazy danych i pokażemy schemat, który działa w kolejnych arkuszach.

Umów pierwszą lekcję (60 zł)

Pierwsza lekcja diagnostyczna 60 min: 60 zł (płatność po lekcji, bez podawania karty z góry) • pierwsza lekcja diagnostyczna 60 zł / 60 min, płatność po lekcji · kolejne lekcje 119 zł / 60 min

Wróć do bloga Przygotowanie do matury z informatyki