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.

  1. Pokaż wszystkie wizyty zaplanowane na marzec 2026 razem z imieniem klienta i nazwą usługi (użyj YEAR() i MONTH()).
    Oczekiwany wynik8 wierszy
  2. Policz łączny przychód każdego fryzjera (suma cen usług). Posortuj od największego.
    Oczekiwany wynik3 wierszepierwszy wiersz: Majewska · 430.00
  3. Znajdź klienta, który odwiedził salon najwięcej razy (jeden wiersz).
    Oczekiwany wynik1 wierszpierwszy wiersz: Alicja · Tomczyk
  4. Pokaż usługi, które trwają dłużej niż 60 minut i kosztują więcej niż 100 zł.
    Oczekiwany wynik2 wiersze
  5. Oblicz, ile łącznie minut pracy zaplanowano wszystkim fryzjerom razem w marcu 2026.
    Oczekiwany wynik1 wierszpierwszy wiersz: 425
  6. Znajdź fryzjerów, którzy nie wykonali żadnej usługi „Trwała” (NOT IN z 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.

Ta interakcja wymaga włączonego JavaScriptu.

4 · Zanim się pomylisz

Trzy pułapki w tym zadaniu

Rozwiń każdą z nich.

Data z godziną a porównanie z samą datą
Tak nie
WHERE data_wizyty = '2026-03-01'

Brak wyników dla wizyt o 10:00, bo wartość ma godzinę.

Tak
WHERE DATE(data_wizyty) = '2026-03-01'

DATE() obcina godzinę.

NOT IN i NULL w podzapytaniu
Tak nie
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.

Tak
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”
Tak nie
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.

Tak
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ć

  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