INF.03 · Bazy danych i SQL

Biuro podróży: filtrowanie i agregacje

Biuro podróży prowadzi rejestr wycieczek i rezerwacji klientów. Zadanie łączy wszystkie podstawowe umiejętności: złączenie z filtrem, sortowanie, sumy, grupowanie i szukanie braków. Zwróć uwagę, że jedno z zapytań ma poprawny pusty wynik.

  • około 45 minut
  • zadanie w stylu egzaminacyjnym
  • baza: biuro_podrozy

Po tej lekcji: wykonasz komplet zapytań w warunkach egzaminacyjnych i udokumentujesz każde zrzutem ekranu.

1 · Sytuacja

Scenariusz i przygotowanie

Zaimportuj bazę biuro_podrozy (Kraje, Wycieczki, Klienci, Rezerwacje). Pobierzesz ją z sekcji „Pliki do pracy”.

2 · Do wykonania

Zapytania do wykonania

Dla każdego zapytania zrób zrzut ekranu. Oczekiwane liczby wierszy podano przy zadaniach, a pełne rozwiązania znajdziesz dopiero po wykonaniu pracy samodzielnie.

  1. Pokaż wszystkie wycieczki do krajów europejskich (nazwa wycieczki i kraj).
    Oczekiwany wynik4 wiersze
  2. Pokaż wycieczki trwające dłużej niż 7 dni, od najdroższej.
    Oczekiwany wynik3 wierszepierwszy wiersz: Bangkok i Phuket · 12 · 4500.00
  3. Policz łączną liczbę osób zarezerwowanych na każdą wycieczkę (nazwa i suma).
    Oczekiwany wynik6 wierszy
  4. Pokaż klientów, którzy zarezerwowali co najmniej dwie różne wycieczki (imię, nazwisko, liczba).
    Oczekiwany wynik3 wiersze
  5. Oblicz łączny przychód biura ze wszystkich rezerwacji (cena wycieczki razy liczba osób).
    Oczekiwany wynik1 wierszpierwszy wiersz: 48800.00
  6. Znajdź wycieczki, na które nikt się jeszcze nie zapisał (LEFT JOIN).Zanim uznasz wynik za błąd, sprawdź SELECT DISTINCT id_wycieczki FROM Rezerwacje;.
    Oczekiwany wynik0 wierszy

3 · Sprawdź się

Czy Twoje wyniki się zgadzają?

To szybka kontrola, a nie ocena. Liczba wierszy jest pierwszym sygnałem, że warunek albo złączenie działa tak, jak trzeba.

Ta interakcja wymaga włączonego JavaScriptu.

4 · Zanim się pomylisz

Trzy pułapki w tym zadaniu

Rozwiń każdą z nich.

Przychód z samych cen
Tak nie
SELECT SUM(w.cena) ...

Pomija liczbę osób: rezerwacja dla czterech osób liczy się jak dla jednej.

Tak
SELECT SUM(w.cena * r.liczba_osob) ...

Przychód to cena razy liczba osób.

Pusty wynik uznany za błąd
Tak nie
„Każde biuro ma jakąś niesprzedaną wycieczkę.”

W tej bazie wszystkie sześć wycieczek ma rezerwacje, więc LEFT JOIN zwraca 0 wierszy. To poprawna odpowiedź.

Tak
Kontrolnie: `SELECT DISTINCT id_wycieczki FROM Rezerwacje;` (6 wartości).

Sprawdzaj dane, zanim zaczniesz szukać błędu w zapytaniu.

Kontynent w złej tabeli
Tak nie
WHERE w.kontynent = 'Europa'

Błąd Unknown column. Kontynent jest w tabeli Kraje, a nie Wycieczki.

Tak
JOIN Kraje k ON ...
WHERE k.kontynent = 'Europa'

Najpierw sprawdź strukturę (DESCRIBE).

5 · Sprawdź sam siebie

Zanim oddasz pracę

Ta lista odpowiada temu, co sprawdza komisja egzaminacyjna: poprawną bazę, poprawne wyniki i dokumentację.

Podsumowanie

Co warto zapamiętać

  1. Czytaj polecenie jak opis wyniku: kolumny, tabele, warunek, kolejność.
  2. Złączenia buduj po jednym i kontroluj liczbę wierszy.
  3. Pusty wynik też może być poprawny, więc sprawdź go kontrolnym zapytaniem.
  4. Dokumentuj pracę zrzutami i zapisanym plikiem.

Dalej na swoim koncie

Rozgrzewki, quiz i zadania są w biurku ucznia.

Teoria jest otwarta dla wszystkich. Żeby rozwiązywać zadania, zapisywać szkice i widzieć swój postęp, zaloguj się.

Zaloguj się →
Źródła i dalsza nauka