SQL na maturze: złączenia i grupowanie
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
W tym artykule:
Ć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 |
|---|---|---|---|
| 2026 | Sieć sklepów | klienci, transakcje, opis_transakcji | 9 |
| 2025 | Poszukiwanie wody na Marsie | laziki, obszary, pomiary | 10 |
| 2024 | Rejestr wykroczeń | kierowcy, taryfikator, rejestr (średnik!) | 9 |
| 2023 | Gry planszowe | gry, gracze, oceny | 10 |
Trzy rzeczy, które powtórzyły się we wszystkich czterech latach
- 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.
- 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, boINNER JOINz definicji nie pokaże wierszy, których szukasz. - Ostatni podpunkt zawsze dokłada nową tabelę do schematu. 2023 tabela
sklep, 2024Fotoradar, 2025Producent, 2026Produkty. 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, tabela2bez warunku wWHEREtworzy iloczyn kartezjański i błędne setki tysięcy rekordów. - Mylenie WHERE z HAVING: Próba napisania
WHERE COUNT(*) > 5wyrzuca błąd składni. - Brak aliasów przy niejednoznacznych nazwach: Jeśli obie tabele mają kolumnę
IdlubNazwa, 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.
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ąć.
Zarezerwuj termin sam
Wybierasz dzień i godzinę w kalendarzu. Zajmuje 2 minuty, termin jest Wasz od razu.
- Widzisz wolne godziny od ręki
- Potwierdzenie mailem
- Termin przełożysz dzień wcześniej
Zostaw kontakt, oddzwonimy
Nie chcesz teraz wybierać godziny? Zostaw numer, ustalimy termin przez telefon.
Najczęstsze pytania
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