Ćwiczenia SQL: Podzapytania (Subqueries)

Podzapytania (zagnieżdżone zapytania) pozwalają wykonać zapytanie wewnątrz innego zapytania SQL. Możemy ich używać w klauzulach WHERE, FROM lub SELECT. Poniżej znajdziesz przykłady i ćwiczenia.


Ćwiczenie 1 - Podzapytanie w WHERE

Instrukcja: Wyświetl wszystkich klientów, którzy złożyli zamówienie o wartości większej niż 500.

Tabele:

Rozwiązanie:

SELECT imie, nazwisko
FROM klienci
WHERE id_klienta IN (
    SELECT id_klienta
    FROM zamowienia
    WHERE wartosc > 500
);

Ćwiczenie 2 - Podzapytanie w SELECT

Instrukcja: Wyświetl imię i nazwisko każdego klienta oraz wartość jego największego zamówienia.

Rozwiązanie:

SELECT imie, nazwisko,
       (SELECT MAX(wartosc)
        FROM zamowienia
        WHERE zamowienia.id_klienta = klienci.id_klienta) AS max_zamowienie
FROM klienci;

Ćwiczenie 3 - Podzapytanie w FROM

Instrukcja: Pokaż średnią wartość zamówienia dla każdego klienta.

Rozwiązanie:

SELECT id_klienta, AVG(wartosc) AS srednia_zamowienia
FROM (
    SELECT id_klienta, wartosc
    FROM zamowienia
) AS podzapytanie
GROUP BY id_klienta;

Ćwiczenie 4 - EXISTS

Instrukcja: Wyświetl imię i nazwisko klientów, którzy złożyli przynajmniej jedno zamówienie.

Rozwiązanie:

SELECT imie, nazwisko
FROM klienci k
WHERE EXISTS (
    SELECT 1
    FROM zamowienia z
    WHERE z.id_klienta = k.id_klienta
);

Ćwiczenie 5 - Zadanie dla Ciebie

Instrukcja: Mamy tabele uczniowie(id_ucznia, imie, nazwisko) i oceny(id_oceny, id_ucznia, przedmiot, ocena). Wyświetl imię i nazwisko uczniów, którzy mają ocenę 6 z matematyki. Spróbuj napisać zapytanie samodzielnie, a potem sprawdź rozwiązanie poniżej.

Rozwiązanie:

SELECT imie, nazwisko
FROM uczniowie
WHERE id_ucznia IN (
    SELECT id_ucznia
    FROM oceny
    WHERE przedmiot = 'Matematyka' AND ocena = 6
);