INF.03 · Bazy danych i SQL
Salon fryzjerski: daty, czas i przychody
Salon rejestruje wizyty klientów: kto, u którego fryzjera, na jaką usługę i kiedy. Zadanie uczy pracy z kolumną daty i godziny (DATETIME), z sumami czasu pracy i z szukaniem braków podzapytaniem NOT IN.
- około 45 minut
- zadanie w stylu egzaminacyjnym
- baza: salon_stylowy
Po tej lekcji: wykonasz komplet zapytań w warunkach egzaminacyjnych i udokumentujesz każde zrzutem ekranu.
1 · Sytuacja
Scenariusz i przygotowanie
Zaimportuj bazę salon_stylowy (Fryzjerzy, Klienci, Uslugi, Wizyty). Kolumna data_wizyty zawiera datę i godzinę.
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 wizyty zaplanowane na marzec 2026 razem z imieniem klienta i nazwą usługi (użyj
YEAR()iMONTH()).Oczekiwany wynik8 wierszy -
Policz łączny przychód każdego fryzjera (suma cen usług). Posortuj od największego.Oczekiwany wynik3 wierszepierwszy wiersz: Majewska · 430.00
-
Znajdź klienta, który odwiedził salon najwięcej razy (jeden wiersz).Oczekiwany wynik1 wierszpierwszy wiersz: Alicja · Tomczyk
-
Pokaż usługi, które trwają dłużej niż 60 minut i kosztują więcej niż 100 zł.Oczekiwany wynik2 wiersze
-
Oblicz, ile łącznie minut pracy zaplanowano wszystkim fryzjerom razem w marcu 2026.Oczekiwany wynik1 wierszpierwszy wiersz: 425
-
Znajdź fryzjerów, którzy nie wykonali żadnej usługi „Trwała” (
NOT INz podzapytaniem).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.
Data z godziną a porównanie z samą datą
WHERE data_wizyty = '2026-03-01'Brak wyników dla wizyt o 10:00, bo wartość ma godzinę.
WHERE DATE(data_wizyty) = '2026-03-01'DATE() obcina godzinę.
NOT IN i NULL w podzapytaniu
NOT IN (SELECT kolumna_z_NULL ...)Gdyby podzapytanie zwróciło choć jeden NULL, NOT IN nie zwróci żadnego wiersza. Tu kolumna id_fryzjera jest wypełniona, więc działa, ale pamiętaj o tym ryzyku.
Upewnij się, że kolumna w podzapytaniu nie ma NULL albo użyj `NOT EXISTS`.NULL w liście wyłącza porównanie.
Remis w pytaniu „kto najwięcej”
LIMIT 1 przy remisie.Tu klientka Alicja ma 3 wizyty i nikt więcej, więc LIMIT 1 jest bezpieczny. W innych danych mogłoby być kilku liderów.
Przed użyciem `LIMIT 1` sprawdź, czy nie ma remisu.Zawsze weryfikuj jednoznaczność.
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ę →