KWALIFIKACJA INF3 - CZERWIEC 2018

PYTANIE NR 23.
Baza danych zawiera tabelę faktury o polach: numer, data, id_klienta, wartosc, status. Każdego dnia generowany jest raport faktur z bieżącego dnia. Wyświetlane są jedynie numery i wartości faktur. Która z kwerend SQL służy do stworzenia tego raportu?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Raport ma pokazywać tylko numery i wartości faktur z bieżącego dnia.
Dlatego w SELECT wskazuje się kolumny numer i wartosc (bez SELECT *), a w WHERE dodaje warunek na datę równą dzisiejszej. Pozostałe zapytania albo zwracają wszystkie dni, albo wszystkie kolumny.

Pełne wyjaśnienie:

W raporcie dziennym wymagane są dwa warunki jednocześnie:

  • ograniczenie kolumn – mają się wyświetlić wyłącznie numer i wartosc,
  • ograniczenie wierszy – tylko faktury z bieżącego dnia.

Zapytanie SELECT numer, wartosc FROM faktury WHERE data = CURRENT_DATE(); spełnia oba wymagania: w części SELECT wybiera tylko dwie wskazane kolumny (tzw. projekcja), a w części WHERE filtruje rekordy do tych, których pole data odpowiada dzisiejszej dacie według serwera bazy.

Dlaczego pozostałe propozycje są błędne?

  • SELECT numer, wartosc FROM faktury; – poprawnie ogranicza kolumny, ale nie filtruje po dacie, więc raport zawierałby faktury z każdego dnia, co nie odpowiada wymaganiu "z bieżącego dnia".
  • SELECT * FROM faktury WHERE data = CURRENT_DATE(); – poprawnie filtruje faktury z dziś, ale zwraca wszystkie pola. To kłóci się z wymaganiem, że w raporcie mają być wyświetlane tylko numery i wartości.
  • SELECT * FROM faktury; – nie spełnia żadnego z ograniczeń: zwraca wszystkie kolumny i wszystkie faktury.

W praktyce warto pamiętać, że zapis funkcji zwracającej bieżącą datę zależy od silnika bazy danych. Na egzaminie kluczowa jest jednak logika: wybierz tylko potrzebne kolumny oraz dodaj filtr na dzisiejszą datę.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

Klauzula WHERE filtruje wiersze zwracane przez zapytanie, czyli ogranicza wynik do rekordów spełniających warunek.

W raporcie dziennym warunek dotyczy daty, np. tylko faktury, których pole data jest równe dacie bieżącej.

W SQL podajesz nazwy kolumn po słowie SELECT, rozdzielając je przecinkami, np. SELECT numer, wartosc.

To lepsze niż SELECT *, bo zwracasz tylko potrzebne dane i wynik jest czytelniejszy.

SELECT * zwraca wszystkie kolumny, także niepotrzebne w raporcie. To może zwiększać ilość przesyłanych danych i utrudniać obróbkę wyników.

W raportach egzaminacyjnych zwykle wymagane jest wskazanie konkretnych pól, zgodnie z treścią zadania.

CURRENT_DATE oznacza bieżącą datę według serwera bazy danych.

W zależności od DBMS składnia bywa różna (np. czasem z nawiasami). Na egzaminie najważniejsze jest rozumienie, że to wartość "dzisiejsza" do porównania w WHERE.

Najczęściej filtruje się po dacie już w bazie danych, gdy chcesz pobrać tylko potrzebne rekordy (np. faktury z dziś) i nie obciążać aplikacji przetwarzaniem nadmiarowych danych.

To poprawia wydajność i zmniejsza transfer między serwerem a aplikacją WWW.

Przy częstym filtrowaniu po polu data przydatny jest indeks na tej kolumnie, bo przyspiesza wyszukiwanie rekordów spełniających warunek z WHERE.

W systemach fakturowania często stosuje się też indeksy złożone (np. data + status), zależnie od raportów.

Uruchom zapytanie i porównaj wynik z danymi w tabeli: rekordy powinny mieć w kolumnie data wartość równą dacie bieżącej.

Jeśli widzisz faktury z innych dni, to znaczy, że brakuje warunku w WHERE albo porównujesz do złej wartości daty.

Bo dokładnie spełnia wymaganie raportu: pokazuje tylko dwie kolumny, które mają być wyświetlane.

Dodatkowo ograniczanie kolumn to dobra praktyka: wynik jest prostszy, a aplikacja ma mniej danych do przetworzenia i przesłania użytkownikowi.

Najczęstsze błędy to: pominięcie WHERE (brak filtrowania), użycie SELECT * mimo wskazanych kolumn, błędna nazwa tabeli/kolumny oraz nieuwzględnienie warunku z treści (np. "z bieżącego dnia").

Pomaga przepisać wymagania na dwa punkty: kolumny i filtr.

Ćwicz tworzenie krótkich zapytań: SELECT z listą kolumn, WHERE z warunkami, podstawowe operacje na datach oraz ORDER BY.

Ucz się czytać polecenie jak checklistę: jakie kolumny mają być w wyniku i jakie rekordy mają zostać wybrane.

info

Około 63% zdających odpowiada poprawnie na to pytanie. średnie

Według specjalistów z branży: "Raport ma pokazywać tylko numery i wartości faktur z bieżącego dnia.Dlatego w SELECT wskazuje się kolumny numer i wartosc (bez SELECT *), a w WHERE dodaje warunek na datę równą dzisiejszej."

Źródła:

  • PostgreSQL Documentation: "Date/Time Functions and Operators" – CURRENT_DATE, https://www.postgresql.org/docs/current/functions-datetime.html (dostęp: 2026-03-01)
  • MySQL 8.0 Reference Manual: "Date and Time Functions" – CURDATE(), CURRENT_DATE, https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html (dostęp: 2026-03-01)
  • SQLite Documentation: "Date And Time Functions" – date('now'), https://www.sqlite.org/lang_datefunc.html (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja wybranego DBMS dotycząca funkcji daty (np. CURRENT_DATE/CURDATE)
  • Ćwiczenia z SQL: SELECT, WHERE, operacje na datach
  • Materiały kursowe do INF.3 z zakresu baz danych i zapytań SQL

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego