KWALIFIKACJA INF3 - CZERWIEC 2022

PYTANIE NR 16.
Wskaż kwerendę, która z tabeli klienci wybierze jedynie nazwiska trzech najlepszych klientów, czyli takich, którzy na swoim koncie mają najwięcej punktów (pole całkowite punkty).
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawna kwerenda musi posortować klientów malejąco według liczby punktów (ORDER BY punkty DESC), aby na początku listy znaleźli się ci z największą liczbą punktów, a następnie ograniczyć wynik do 3 rekordów (LIMIT 3). Zapytania bez sortowania lub sortujące po nazwisku nie wybiorą "najlepszych" klientów.

Pełne wyjaśnienie:

W pytaniu "trzech najlepszych klientów" oznacza trzy rekordy o największej wartości pola punkty (liczba całkowita). Aby to uzyskać, zapytanie SQL musi wykonać dwa kluczowe kroki:

  • Ustalić kolejność wyników według punktów malejąco: ORDER BY punkty DESC. "DESC" (descending) powoduje, że największe wartości są na początku.
  • Ograniczyć liczbę zwracanych wierszy do trzech: LIMIT 3. Dzięki temu zwracane są tylko pierwsze trzy rekordy z już posortowanej listy.

Dlatego poprawna jest kwerenda w stylu: SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3; – zwraca wyłącznie kolumnę nazwisko, ale ranking wyznacza na podstawie punkty.

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

  • SELECT nazwisko FROM klienci LIMIT 3; ogranicza wynik do 3 wierszy, ale bez sortowania nie ma gwarancji, że będą to osoby z największą liczbą punktów. Zwróci "pierwsze lepsze" rekordy w kolejności domyślnej.
  • SELECT nazwisko FROM klienci ORDER BY nazwisko DESC LIMIT 3; sortuje po nazwisku, czyli wybiera trzy nazwiska "najwyżej" w porządku alfabetycznym, a nie najlepszych punktowo.
  • SELECT LIMIT 3 nazwisko FROM klienci ORDER BY nazwisko DESC; ma niepoprawną składnię w typowych dialektach SQL używających LIMIT (LIMIT nie wstawia się w to miejsce), dodatkowo znów sortuje po nazwisku zamiast po punktach.

Wskazówka egzaminacyjna: gdy w treści pojawia się "najwięcej/najmniej", niemal zawsze potrzebujesz ORDER BY z właściwym kierunkiem (DESC dla "najwięcej", ASC dla "najmniej") oraz mechanizmu "Top N" (np. LIMIT). Jeśli mogą wystąpić remisy punktów, w praktyce dodaje się drugie kryterium sortowania (np. po nazwisku), aby wynik był deterministyczny.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Sortuje wiersze wyniku według kolumny punkty malejąco, czyli od największej do najmniejszej wartości. Dzięki temu na początku zestawienia znajdują się klienci z najwyższą liczbą punktów, co jest kluczowe przy budowie rankingów.
LIMIT 3 ogranicza liczbę zwróconych rekordów do trzech pierwszych wierszy z wyniku. Jeśli wcześniej użyjesz ORDER BY, to LIMIT zwróci "Top 3" zgodnie z tą kolejnością. Bez sortowania wybór 3 rekordów jest przypadkowy (z perspektywy logiki biznesowej).
Samo LIMIT 3 nie definiuje, co znaczy "najlepsi", bo nie ustala kolejności. Baza może zwrócić trzy dowolne rekordy w kolejności domyślnej (np. fizycznej, wg indeksu). Aby wybrać najlepszych punktowo, musisz jawnie posortować po punkty malejąco.
DESC oznacza sortowanie malejące (od największych wartości do najmniejszych lub od Z do A dla tekstu). ASC oznacza sortowanie rosnące (od najmniejszych do największych lub od A do Z). Przy "najwięcej punktów" wybierasz zwykle DESC.
Nie. Sortowanie po nazwisko porządkuje dane alfabetycznie, a nie według wyniku punktowego. To typowy błąd: w SELECT wybierasz nazwisko do wyświetlenia, ale ranking powinien być oparty o kolumnę punkty, więc ORDER BY musi dotyczyć punktów.
W praktyce dodaje się dodatkowe kryterium sortowania, aby wynik był deterministyczny, np. ORDER BY punkty DESC, nazwisko ASC. Wtedy przy remisie punktów klienci są uporządkowani według nazwiska. Na egzaminie kluczowe jest, by pierwszym kryterium były punkty.
W Microsoft SQL Server najczęściej stosuje się składnię TOP lub mechanizmy OFFSET/FETCH, a nie LIMIT. Dlatego w zadaniach egzaminacyjnych warto zwracać uwagę, jaki DBMS jest zakładany. W MySQL/MariaDB/SQLite/PostgreSQL LIMIT jest typowy.
Rozszerzasz listę kolumn w SELECT, a sortowanie i LIMIT zostają takie same. Przykładowo: SELECT imie, nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3;. Kluczowa zasada: wybierane kolumny nie muszą być tym samym, co kolumna użyta do rankingu.
Częsty błąd to wstawianie LIMIT w złe miejsce (np. między SELECT a kolumnę) albo mieszanie składni z innym DBMS. W dialektach z LIMIT poprawny układ to zwykle: SELECT ... FROM ... ORDER BY ... LIMIT ...; (LIMIT na końcu).
Ćwicz krótkie schematy: SELECT (jakie kolumny), FROM (jaka tabela), WHERE (jakie warunki), ORDER BY (jak sortować), LIMIT (ile rekordów). Rób zadania "Top N" i świadomie wybieraj ASC/DESC.
info

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

Eksperci podkreślają: "Zapytania bez sortowania lub sortujące po nazwisku nie wybiorą "najlepszych" klientów."

Źródła:

  • MySQL 8.0 Reference Manual: SELECT Statement, "LIMIT Clause" (dev.mysql.com/doc/refman/8.0/en/select.html) - accessed 2026-02-27
  • PostgreSQL Documentation: SELECT, "LIMIT" (https://www.postgresql.org/docs/current/sql-select.html) - accessed 2026-02-27
  • SQLite Documentation: SELECT, "LIMIT clause" (https://www.sqlite.org/lang_select.html) - accessed 2026-02-27

Materiały:

  • Dokumentacja DBMS używanego na zajęciach (sekcja SELECT/ORDER BY/LIMIT)
  • Ćwiczenia z budowy kwerend rankingowych (Top N) na przykładowych tabelach
  • Powtórka różnic składni SQL między MySQL/PostgreSQL/SQLite a SQL Server (TOP/FETCH)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego