INF.03 · Bazy danych i SQL
Wypożyczalnia rowerów miejskich: obliczenia na datach
Miejski system wypożyczalni rowerów rejestruje start i koniec każdej trasy. Zadanie uczy liczenia czasu z dwóch kolumn daty i godziny, szukania wypożyczeń niezakończonych (NULL) oraz sprawdzania spójności danych.
- około 45 minut
- zadanie w stylu egzaminacyjnym
- baza: wypozyczalnia_rowerow
Po tej lekcji: wykonasz komplet zapytań w warunkach egzaminacyjnych i udokumentujesz każde zrzutem ekranu.
1 · Sytuacja
Scenariusz i przygotowanie
Zaimportuj bazę wypozyczalnia_rowerow (Stacje, Rowery, Klienci, Wypozyczenia). Wypożyczenie bez czas_koniec jest jeszcze w trakcie.
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.
-
Pokaż wszystkie wypożyczenia, które nie zostały jeszcze zakończone (
czas_koniec IS NULL).Oczekiwany wynik1 wiersz -
Dla zakończonych wypożyczeń oblicz czas trwania w minutach (
TIMESTAMPDIFF). Pokaż numer wypożyczenia i minuty, od najmniejszego numeru.Oczekiwany wynik7 wierszypierwszy wiersz: 1 · 25 -
Pokaż wypożyczenia zakończone, które trwały dłużej niż 40 minut.Oczekiwany wynik2 wiersze
-
Pokaż liczbę wypożyczeń z każdej stacji (nazwa stacji i liczba), łącząc Rowery, Wypozyczenia i Stacje.Oczekiwany wynik4 wiersze
-
Sprawdź spójność: znajdź rowery oznaczone jako „uszkodzony”, które mimo to mają zarejestrowane wypożyczenie.Pusty wynik oznacza, że dane są spójne.Oczekiwany wynik0 wierszy
-
Pokaż liczbę wypożyczeń rowerów elektrycznych według stacji (nazwa stacji i liczba).Oczekiwany wynik2 wiersze
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.
4 · Zanim się pomylisz
Trzy pułapki w tym zadaniu
Rozwiń każdą z nich.
Odejmowanie dat zamiast TIMESTAMPDIFF
SELECT czas_koniec - czas_start FROM Wypozyczenia;Wynik to dziwna liczba (sklejone cyfry daty i godziny), a nie minuty.
TIMESTAMPDIFF(MINUTE, czas_start, czas_koniec)Różnicę dat liczy się funkcją, a nie odejmowaniem.
NULL w obliczeniach
TIMESTAMPDIFF(MINUTE, czas_start, czas_koniec) -- dla wypożyczenia bez końcaDla wypożyczenia w toku wynik to NULL. Nie wolno zastępować go zerem, bo oznaczałoby to wypożyczenie trwające zero minut.
Dodaj `WHERE czas_koniec IS NOT NULL`.NULL to „nieznane”, a nie „zero”.
Remis przy pytaniu „najdłuższe”
ORDER BY minut DESC LIMIT 1Dwa wypożyczenia trwały po 45 minut, więc LIMIT 1 wskaże jedno z nich przypadkowo.
Pytaj o wypożyczenia dłuższe niż próg albo pokaż wszystkie remisy.Sprawdzaj jednoznaczność pytania.
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ć
- Czytaj polecenie jak opis wyniku: kolumny, tabele, warunek, kolejność.
- Złączenia buduj po jednym i kontroluj liczbę wierszy.
- Pusty wynik też może być poprawny, więc sprawdź go kontrolnym zapytaniem.
- 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ę →