KWALIFIKACJA INF3 - STYCZEŃ 2021

PYTANIE NR 17.
W bazie danych sklepu istnieją dwie tabele powiązane relacją: produkty oraz oceny. Tabela oceny zawiera dowolną liczbę ocen klientów dla danego produktu opisaną polami: id, ocena (pole numeryczne), produktID (klucz obcy). Aby wskazać maksymalną ocenę dla produktu o ID równym 10, należy posłużyć się zapytaniem
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne zapytanie używa funkcji agregującej MAX(ocena), aby zwrócić najwyższą wartość z kolumny ocena. Klauzula WHERE produktID = 10 ogranicza analizowane wiersze tylko do ocen danego produktu, dzięki czemu maksimum liczone jest wyłącznie dla produktu o ID 10.

Pełne wyjaśnienie:

Aby wskazać maksymalną ocenę dla konkretnego produktu, trzeba wykonać dwie operacje logiczne:

  • Odfiltrować tylko te rekordy w tabeli oceny, które dotyczą produktu o danym identyfikatorze (tu: produktID = 10).
  • Zagregować wartości z kolumny ocena, wybierając z nich wartość największą funkcją MAX().

Dlatego poprawna konstrukcja ma postać: SELECT MAX(ocena) FROM oceny WHERE produktID = 10;. Zwraca ona jedną wartość (pojedynczy wynik), bo funkcja agregująca MAX() oblicza maksimum ze zbioru wartości spełniających warunek.

Dlaczego pozostałe odpowiedzi są błędne:

  • "MAX SELECT …" – w SQL nie ma takiego szyku. Zapytanie musi zaczynać się od słowa kluczowego SELECT, a funkcja MAX() jest wyrażeniem umieszczanym po SELECT.
  • "COUNT MAX SELECT …" – to losowe połączenie słów kluczowych i funkcji. COUNT i MAX to funkcje, ale nie występują jako osobne "polecenia" przed SELECT.
  • "SELECT MAX COUNT(ocena) …" – to błędna składnia oraz niezrozumienie funkcji agregujących. COUNT(ocena) zwraca liczbę ocen, a nie ich wartość; dodatkowo nie zapisuje się w SQL "MAX COUNT(...)" bez poprawnej składni zagnieżdżenia i sensownego celu.

Wskazówka egzaminacyjna: jeśli pytanie zawiera słowo "maksymalna/minimalna/średnia/liczba", najpierw dobierz właściwą funkcję agregującą (MAX/MIN/AVG/COUNT), a dopiero potem upewnij się, że warunek WHERE ogranicza dane do właściwego obiektu (tu: konkretnego produktu).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Funkcja MAX() zwraca największą wartość z podanego zbioru wartości w kolumnie. Gdy użyjesz jej w SELECT, otrzymasz zwykle jeden wynik (jedną komórkę), np. najwyższą ocenę wśród rekordów spełniających warunek WHERE.
Użyj agregacji i filtru: SELECT MAX(ocena) FROM oceny WHERE produktID = 10;. Warunek WHERE zawęża wiersze do ocen konkretnego produktu, a MAX wybiera z nich wartość największą.
Bez WHERE produktID = 10 funkcja MAX(ocena) policzyłaby maksimum ze wszystkich ocen w tabeli, czyli dla całego sklepu. Warunek WHERE sprawia, że analizowane są tylko rekordy przypisane do produktu o wskazanym identyfikatorze.
Nie zawsze. Jeśli chcesz maksimum dla jednego produktu (np. produktID = 10), wystarczy WHERE i MAX(). GROUP BY jest potrzebne, gdy chcesz policzyć maksimum dla wielu produktów naraz, np. maksimum oceny dla każdego produktu.
MAX() zwraca największą wartość w kolumnie (np. najwyższą ocenę 5). COUNT() zwraca liczbę rekordów (np. ile ocen ma produkt). To inne typy wyników: wartość vs liczność.
Gdy nie ma pasujących wierszy (np. brak rekordów z produktID = 10), wynik MAX(ocena) będzie pusty logicznie (w wielu systemach jako NULL). To sygnał, że w zbiorze wejściowym nie było żadnej wartości do porównania.
To zależy od środowiska. W wielu konsolach i narzędziach średnik kończy instrukcję i ułatwia wykonanie wielu poleceń naraz. W części bibliotek aplikacyjnych można go pominąć, ale na egzaminie zwykle warto go zostawić jako poprawny zapis pełnego polecenia.
Wtedy stosuje się grupowanie: SELECT produktID, MAX(ocena) FROM oceny GROUP BY produktID;. GROUP BY tworzy grupy wierszy dla każdego produktu, a MAX() liczy maksimum w każdej grupie osobno.
SQL ma określoną składnię: zapytanie wybierające dane zaczyna się od SELECT. Funkcje agregujące (np. MAX()) są elementem listy wybieranych wyrażeń po SELECT. Przestawienie słów kluczowych łamie gramatykę języka SQL.
Najczęściej: brak filtru WHERE dla właściwego obiektu, mylenie MAX z COUNT, błędny szyk słów (np. stawianie MAX przed SELECT) oraz próby łączenia agregacji bez sensu. Pomaga zasada: najpierw filtrujesz dane, potem liczysz agregację.
info

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

Według specjalistów z branży: "Poprawne zapytanie używa funkcji agregującej MAX(ocena), aby zwrócić najwyższą wartość z kolumny ocena."

Źródła:

  • PostgreSQL Documentation: Aggregate Functions (MAX), https://www.postgresql.org/docs/current/functions-aggregate.html - accessed 2026-02-18
  • MySQL 8.0 Reference Manual: Aggregate (GROUP BY) Functions and Modifiers (MAX), https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html - accessed 2026-02-18
  • SQLite Documentation: Core Functions (max), https://www.sqlite.org/lang_corefunc.html#maxoreunc - accessed 2026-02-18

Materiały:

  • Dokumentacja używanego silnika bazy danych: sekcja o funkcjach agregujących
  • Ćwiczenia SQL: agregacje (MAX/MIN/AVG/COUNT) i filtrowanie WHERE
  • Kurs podstaw SQL dla aplikacji webowych (zapytania SELECT)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego