Zadanie 9: Wypożyczalnia filmów — agregacje, modyfikacje i podzapytania
Trudny / egzaminacyjnyPo co się tego uczymy?
To zadanie łączy wszystko, czego nauczyłeś się do tej pory w jednym, bardziej wymagającym zestawie — dokładnie tak wyglądają trudniejsze partie prawdziwego arkusza egzaminacyjnego.
Treść zadania
Pracujesz na bazie wypozyczalnia_filmow.
1. Policz średnią cenę wypożyczenia filmu w każdym gatunku.
2. Znajdź gatunek, w którym średnia cena wypożyczenia jest najwyższa (podzapytanie z MAX).
3. Podwyższ cenę wypożyczenia wszystkich filmów z gatunku "Sci-Fi" o 10% (UPDATE).
4. Usuń (DELETE) wypożyczenia starsze niż rok 2025 — najpierw napisz SELECT z tym samym warunkiem, żeby sprawdzić, co dokładnie zostanie usunięte, dopiero potem zamień na DELETE.
5. Znajdź klientów, którzy wypożyczyli więcej filmów niż wynosi średnia liczba wypożyczeń na klienta (podzapytanie + GROUP BY + HAVING).
6. Dodaj nową kolumnę liczba_kopii do tabeli Filmy (ALTER TABLE) z wartością domyślną 1.
Jak zabrać się do zadania
1. Zacznij od punktów 1-2 (czyste zapytania z agregacją), zanim przejdziesz do modyfikacji danych.
2. Do UPDATE i DELETE ZAWSZE najpierw napisz SELECT z tym samym warunkiem WHERE i sprawdź, ile i które dokładnie wiersze zostaną dotknięte.
3. Dopiero gdy ten SELECT pokazuje dokładnie to, czego się spodziewasz, zamień słowo kluczowe na UPDATE ... SET ... albo na DELETE.
4. Zapytanie 6 (ALTER TABLE) wykonaj jako ostatnie — zmienia strukturę, więc nie wpływa na resztę ćwiczenia.
Jak powinien wyglądać efekt
Po wykonaniu UPDATE z punktu 3 ceny filmów z gatunku Sci-Fi powinny wzrosnąć dokładnie o 10% względem wartości z Zadania 6 (np. 9.99 zł → 10.99 zł). Po DELETE z punktu 4 tabela Wypozyczenia powinna mieć mniej wierszy niż na starcie — dokładnie o tyle, ile wierszy pokazał wcześniejszy SELECT kontrolny.
Typowe problemy i jak sobie z nimi poradzić
Najpoważniejszy możliwy błąd to wykonanie DELETE lub UPDATE bez wcześniejszego sprawdzenia warunku przez SELECT — zawsze rób to w tej kolejności, żeby nie usunąć/zmienić czegoś przypadkiem.
Nawiązanie do egzaminu zawodowego
Łączy efekty INF.03.4.4 (SQL, w tym modyfikacja danych), INF.03.4.7 ("modyfikuje struktury baz danych") w jednym zadaniu zbliżonym poziomem do trudniejszych zadań egzaminacyjnych.
Kryteria sukcesu — sprawdź, czy wykonałeś zadanie poprawnie
Po wykonaniu zadania sprawdź, czy:
1. przed każdym UPDATE i DELETE wykonałeś kontrolny SELECT z tym samym warunkiem,
2. ceny filmów Sci-Fi wzrosły dokładnie o 10% względem wartości z importu,
3. usunięte zostały tylko wypożyczenia sprzed 2025 roku, nic więcej,
4. tabela Filmy ma nową kolumnę liczba_kopii z wartością domyślną 1,
5. zapytanie 5 (klienci powyżej średniej) rzeczywiście używa podzapytania z AVG.