Podzapytanie (ang. subquery) to zapytanie SQL umieszczone wewnątrz innego zapytania. Wykonuje się jako pierwsze, a jego wynik jest wykorzystywany przez zapytanie zewnętrzne. Podzapytania pozwalają rozwiązywać problemy, których nie da się wyrazić prostym JOIN-em.
Podzapytanie (SELECT AVG(srednia) FROM Uczniowie) wykonuje się jako pierwsze i zwraca pojedynczą liczbę, którą zapytanie zewnętrzne wykorzystuje w porównaniu.
Gdy podzapytanie zwraca wiele wartości (nie jedną), używamy operatora IN zamiast znaku porównania.
Podzapytanie skorelowane odwołuje się do kolumny z zapytania zewnętrznego — jest wykonywane osobno dla każdego wiersza zapytania głównego (wolniejsze, ale czasem konieczne).
Typowe zadania maturalne wymagają obliczeń na datach: wieku, liczby dni między zdarzeniami, filtrowania po roku/miesiącu. Składnia różni się nieco między silnikami SQL — poniżej przykłady dla SQLite (używanego m.in. w arkuszach egzaminacyjnych CKE).
SQL oczekuje dat w formacie RRRR-MM-DD (ISO 8601). Data zapisana jako tekst w innym formacie (np. 20.06.2026) nie będzie poprawnie porównywana ani sortowana!
Napisz zapytanie z podzapytaniem skorelowanym, które znajdzie wszystkich uczniów, których indywidualna ocena jest wyższa niż średnia ocen w ich własnej klasie.
Mając tabelę Uczniowie z kolumną data_urodzenia, napisz zapytanie wypisujące imię i wiek trzech najstarszych uczniów, posortowanych malejąco według wieku (użyj ORDER BY i LIMIT).
1. Kiedy w podzapytaniu należy użyć operatora IN zamiast znaku =?
2. Czym charakteryzuje się podzapytanie skorelowane?
3. W jakim formacie SQL (ISO 8601) należy zapisywać daty, aby poprawnie je porównywać i sortować?