Bazy Danych

SQL na Maturze: JOIN, GROUP BY i COUNT. Opanuj te 3 filary, a zdasz na 100%

KI

KursInformatyka

Eksperci od przygotowania do matury z informatyki

17 min
Obraz główny artykułu: SQL na Maturze: JOIN, GROUP BY i COUNT. Opanuj te 3 filary, a zdasz na 100%

Część matury z informatyki poświęcona bazom danych to dla wielu uczniów prawdziwy dar losu. Dlaczego? Ponieważ jest niesamowicie schematyczna. W przeciwieństwie do otwartych problemów algorytmicznych, zadania z SQL prawie zawsze polegają na tych samych kilku wzorcach. Wystarczy, że opanujesz trzy kluczowe koncepcje - łączenie tabel (JOIN), grupowanie wyników (GROUP BY) i zliczanie (COUNT) - a będziesz w stanie rozwiązać niemal każde polecenie, które CKE postawi na Twojej drodze. Ten poradnik to czysta praktyka - przejdziemy przez te filary na prostym, życiowym przykładzie.

Nasza Przykładowa Baza Danych (Szkolna Biblioteka)

Klucz do sukcesu: zrozum relacje!

Zanim napiszesz choć jedną kwerendę, musisz zrozumieć relacje między tabelami. Znajdź klucze główne i obce - to one pokażą Ci, jak połączyć dane JOIN-em.

1. Tabela Czytelnicy (Przechowuje, kto wypożycza)

ID_Czytelnika (Klucz Podst.)ImieNazwiskoID_Klasy (Klucz Obcy)
1JanKowalski10
2AnnaNowak11
3PiotrZieliński10

2. Tabela Klasy (Słownik klas)

ID_Klasy (Klucz Podst.)NazwaKlasyWychowawca
103Amgr Iksiński
113Bmgr Ygrekowski

3. Tabela Wypozyczenia (Rejestr operacji)

ID_WypozyczeniaID_Czytelnika (Klucz Obcy)TytulKsiazkiDataWypozyczenia
12Potop2025-01-10
21Lalka2025-01-11
32Dziady2025-01-12
43Potop2025-01-13

Kluczowa obserwacja (Relacje): Aby dowiedzieć się, z jakiej klasy jest czytelnik Jan Kowalski, musisz połączyć tabelę Czytelnicy (gdzie ID_Klasy = 10) z tabelą Klasy (gdzie ID_Klasy = 10). Aby zobaczyć, co wypożyczyła Anna Nowak, łączysz Czytelnicy (gdzie ID_Czytelnika = 2) z Wypozyczenia (gdzie ID_Czytelnika = 2). To jest fundament.

Filar 1: Podstawy (SELECT, FROM, WHERE)

To jest Twój zestaw startowy. Służy do wyciągania danych z JEDNEJ tabeli.

  • SELECT - Mówi, które kolumny chcesz zobaczyć (np. Imie, Nazwisko). SELECT * oznacza 'pokaż wszystkie kolumny'.
  • FROM - Mówi, z której tabeli chcesz czerpać dane (np. Czytelnicy).
  • WHERE - Filtruje wiersze (np. Imie = 'Anna').

Zadanie: Znajdź imię i nazwisko czytelnika o ID równym 3.

SELECT Imie, Nazwisko
FROM Czytelnicy
WHERE ID_Czytelnika = 3;
sql

Wynik: Piotr | Zieliński

Filar 2: INNER JOIN (Łączenie tabel)

Kiedy używasz JOIN?

Używasz go, gdy informacja, której szukasz, jest rozbita na dwie lub więcej tabel. JOIN 'skleja' wiersze z różnych tabel na podstawie wspólnej wartości - klucza podstawowego i obcego.

Zadanie: Wypisz imiona i nazwiska wszystkich czytelników wraz z nazwami ich klas.

Informacje są w dwóch tabelach: Czytelnicy (Imie, Nazwisko) i Klasy (NazwaKlasy). Musimy je połączyć.

SELECT T1.Imie, T1.Nazwisko, T2.NazwaKlasy
FROM Czytelnicy AS T1
INNER JOIN Klasy AS T2 ON T1.ID_Klasy = T2.ID_Klasy;
sql

Co tu się stało?

  • FROM Czytelnicy AS T1 - Bierzemy tabelę Czytelnicy i nadajemy jej 'ksywkę' T1 (to ułatwia pisanie).
  • INNER JOIN Klasy AS T2 - Doklejamy do niej tabelę Klasy jako T2.
  • ON T1.ID_Klasy = T2.ID_Klasy - To jest 'klej'. Mówimy: 'Połącz wiersz z T1 z wierszem z T2 tylko wtedy, gdy ID_Klasy w obu jest identyczne'.

Wynik:

ImieNazwiskoNazwaKlasy
JanKowalski3A
AnnaNowak3B
PiotrZieliński3A

Filar 3: GROUP BY i Funkcje Agregujące (COUNT, SUM, AVG)

Używasz ich, gdy pytanie w poleceniu zaczyna się od słów: "Ile...", "Policz...", "Znajdź średnią...", "Podsumuj...". GROUP BY 'zwija' wiele wierszy w jeden na podstawie wspólnej cechy, a funkcje agregujące (jak COUNT - licz, SUM - sumuj, AVG - średnia) wykonują na nich obliczenia.

Zadanie: Policz, ilu czytelników jest w każdej klasie.

SELECT T2.NazwaKlasy, COUNT(T1.ID_Czytelnika) AS LiczbaUczniow
FROM Czytelnicy AS T1
INNER JOIN Klasy AS T2 ON T1.ID_Klasy = T2.ID_Klasy
GROUP BY T2.NazwaKlasy;
sql

Co tu się stało?

  1. Najpierw JOIN tworzy wirtualną tabelę (tę, co w poprzednim punkcie).
  2. Potem GROUP BY T2.NazwaKlasy bierze tę tabelę i 'zwija' ją: wszystkie wiersze z '3A' lądują w jednym worku, a wszystkie z '3B' w drugim.
  3. Na koniec SELECT z COUNT(T1.ID_Czytelnika) liczy, ile rekordów wpadło do każdego 'worka'.

Wynik:

NazwaKlasyLiczbaUczniow
3A2
3B1

Łączymy Wszystko: JOIN + GROUP BY + ORDER BY

To jest typowe, złożone zadanie maturalne, które wykorzystuje wszystkie poznane elementy oraz ORDER BY (sortowanie).

Zadanie: Policz, ile książek wypożyczył każdy czytelnik. Wypisz imię, nazwisko i liczbę wypożyczonych książek. Posortuj wyniki od najaktywniejszego czytelnika.

SELECT T1.Imie, T1.Nazwisko, COUNT(T2.ID_Wypozyczenia) AS LiczbaKsiazek
FROM Czytelnicy AS T1
INNER JOIN Wypozyczenia AS T2 ON T1.ID_Czytelnika = T2.ID_Czytelnika
GROUP BY T1.Imie, T1.Nazwisko
ORDER BY LiczbaKsiazek DESC;
sql

Analiza:

  • JOIN łączy Czytelnicy (T1) z Wypozyczenia (T2) po ID_Czytelnika.
  • GROUP BY T1.Imie, T1.Nazwisko tworzy 'worki' dla każdego unikalnego czytelnika.
  • COUNT(T2.ID_Wypozyczenia) liczy, ile rekordów wypożyczeń wpadło do 'worka' każdego czytelnika.
  • ORDER BY LiczbaKsiazek DESC sortuje wynik malejąco (DESC).

Wynik:

ImieNazwiskoLiczbaKsiazek
AnnaNowak2
JanKowalski1
PiotrZieliński1

Przykładowe zadanie maturalne z SQL z rozwiązaniem krok po kroku

Poniżej znajdziesz typowe zadanie maturalne SQL z pełnym rozwiązaniem.

Zadanie: Znajdź czytelnika z największą liczbą wypożyczeń

Treść zadania: Na podstawie bazy danych biblioteki znajdź imię i nazwisko czytelnika, który wypożyczył najwięcej książek. Wypisz również liczbę jego wypożyczeń.

Rozwiązanie krok po kroku

Krok 1: Połącz tabele - potrzebujemy danych z Czytelnicy (imię, nazwisko) i Wypozyczenia (policzenie wypożyczeń).

Krok 2: Grupuj po czytelniku i policz wypożyczenia.

Krok 3: Posortuj malejąco i weź tylko pierwszy wynik.

SELECT T1.Imie, T1.Nazwisko, COUNT(T2.ID_Wypozyczenia) AS LiczbaWypozyczen
FROM Czytelnicy AS T1
INNER JOIN Wypozyczenia AS T2 ON T1.ID_Czytelnika = T2.ID_Czytelnika
GROUP BY T1.Imie, T1.Nazwisko
ORDER BY LiczbaWypozyczen DESC
LIMIT 1;
sql

Uwaga dla Access: W Microsoft Access zamiast LIMIT 1 użyj TOP 1 zaraz po SELECT: SELECT TOP 1 T1.Imie, ...

Wskazówka na maturę

Zawsze buduj zapytanie krok po kroku: najpierw JOIN, potem GROUP BY, na końcu ORDER BY. Przetestuj każdy etap osobno, zanim dodasz kolejną klauzulę.

Podsumowanie: Twój Schemat Postępowania

Gdy dostaniesz zadanie z bazy danych, zawsze postępuj według tego planu:

  1. Przeanalizuj relacje: Zobacz, które tabele mają wspólne klucze (np. ID_Klasy).
  2. Zidentyfikuj pytanie:
  3. a) Czy pyta o dane z jednej tabeli? -> Użyj SELECT ... FROM ... WHERE ...
  4. b) Czy pyta o dane z wielu tabel (np. nazwisko ucznia i nazwę jego klasy)? -> Musisz użyć INNER JOIN ... ON ...
  5. c) Czy pyta "Ile...", "Średnio...", "Suma..."? -> Musisz użyć GROUP BY i funkcji agregujących (COUNT, AVG, SUM).
  6. Sortowanie: Jeśli wynik ma być posortowany, dodaj ORDER BY ... [ASC/DESC] na samym końcu.

Opanuj te wzorce, a zadania z SQL staną się dla Ciebie najprostszą częścią egzaminu.

Szukasz więcej praktyki? Sprawdź pełny kurs do matury z informatyki.

Tagi:

matura
informatyka
sql
bazy danych
join
group by
count
access
poradnik

Udostępnij artykuł:

KI

O autorze: KursInformatyka

Zespół ekspertów specjalizujących się w przygotowaniu do matury z informatyki. Pomagamy uczniom osiągnąć wymarzony wynik na egzaminie.

Zobacz wszystkie artykuły

Bądź na bieżąco

Zapisz się do newslettera i otrzymuj najnowsze artykuły, porady i materiały prosto na swoją skrzynkę.

Twoje dane są bezpieczne. Możesz wypisać się w każdej chwili.