KWALIFIKACJA INF3 - CZERWIEC 2014

PYTANIE NR 18.
Jak posortowana będzie lista, utworzona ze wszystkich kolumn tabeli uczniowie i zawierająca uczniów ze średnią większą od 5, która zostanie zwrócona jako wynik przedstawionego zapytania?
Ilustracja przedstawia fragment zapytania SQL, które jest częścią pytania egzaminacyjnego dotyczącego kwalifikacji zawodowej
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
O kolejności zwracanych rekordów decyduje klauzula sortowania. W przedstawionym zapytaniu wskazano sortowanie po kolumnie klasa w kierunku malejącym (DESC), dlatego wynik jest ułożony malejąco według klasy.
Warunek "średnia > 5" jedynie ogranicza, którzy uczniowie trafią do wyniku.

Pełne wyjaśnienie:

W zapytaniach do relacyjnych baz danych trzeba rozdzielić dwie niezależne rzeczy: filtrowanie i sortowanie.

Filtrowanie odpowiada na pytanie: które wiersze w ogóle mają się znaleźć w wyniku. W tym zadaniu warunek typu "średnia większa od 5" powoduje, że do listy trafią tylko uczniowie spełniający to kryterium, ale nie ustala on kolejności wyświetlania rekordów.

Sortowanie odpowiada na pytanie: w jakiej kolejności zwrócić już wybrane wiersze. O tym decyduje klauzula porządkująca (ORDER BY) oraz:

  • kolumna sortowania (tu: "klasa"),
  • kierunek: rosnąco (ASC) albo malejąco (DESC).

Skoro w zapytaniu ustawiono sortowanie według "klasa" w kierunku malejącym, poprawna jest odpowiedź: "Malejąco według parametru klasa."

Pozostałe propozycje są błędne z typowych powodów: odpowiedzi z "rosnąco według parametru klasa" mylą kierunek sortowania, a odpowiedzi "według parametru średnia" mylą warunek wyboru (średnia > 5) z kryterium porządku. Kolumna użyta w filtrze nie staje się automatycznie kolumną sortującą.

Wskazówka egzaminacyjna: najpierw znajdź w zapytaniu część filtrującą (warunek), a potem osobno odszukaj fragment odpowiedzialny za kolejność (ORDER BY). To pozwala uniknąć najczęstszej pomyłki.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
O kolejności rekordów decyduje część zapytania odpowiedzialna za sortowanie, czyli klauzula ORDER BY. To ona wskazuje kolumnę (lub kolumny) oraz kierunek rosnący/malejący. Warunki filtrowania wybierają rekordy, ale same z siebie nie ustawiają kolejności.
Warunek typu "średnia > 5" jest filtrem: mówi, które wiersze mają wejść do wyniku. Sortowanie jest osobnym etapem i wynika z ORDER BY. Kolumna użyta w filtrze nie staje się automatycznie kryterium sortowania, jeśli nie została wskazana w sortowaniu.
Sortowanie malejące rozpoznasz po ustawieniu kierunku DESC przy danej kolumnie w klauzuli ORDER BY. Jeśli kierunek nie jest podany, zwykle domyślnie jest rosnący. Na egzaminie zawsze sprawdź, czy przy kolumnie jest jawnie wpisany kierunek.
Sortowanie rosnące jest oznaczane jako ASC albo bywa domyślne, gdy kierunku nie podano. W praktyce oznacza to kolejność od wartości "mniejszych" do "większych" według reguł typu danych (np. liczby, tekst). Zawsze czytaj, czy przy kolumnie jest ASC/DESC.
To informacja o tym, jakie pola są zwracane w wyniku (np. imię, nazwisko, klasa, średnia). Nie wpływa ona na kolejność rekordów. Kolejność zależy od sortowania, a nie od tego, czy wybierasz wszystkie kolumny, czy tylko wybrane.
Najczęstsze błędy to: mylenie filtrowania z sortowaniem (warunek ≠ kolejność), odwracanie kierunku rosnąco/malejąco oraz zakładanie, że sortuje się po tej kolumnie, która występuje w warunku. Pomaga nawyk: najpierw znajdź filtr, potem ORDER BY.
Tak, to bardzo częste. Przykładowo filtrujesz uczniów ze średnią powyżej progu, a sortujesz ich według klasy albo nazwiska. To dwa niezależne mechanizmy: warunek wybiera rekordy, a sortowanie porządkuje już wybrany zbiór według wskazanej kolumny.
Gdy sortujesz po kilku kolumnach, pierwsza kolumna ustala główną kolejność, a kolejne działają jako "dogrywka" dla rekordów o tej samej wartości w poprzedniej kolumnie. Wtedy w odpowiedziach trzeba zwracać uwagę na pełną listę kolumn w sortowaniu i ich kierunki.
Wtedy, gdy w klauzuli sortującej wskazano kolumnę klasa z kierunkiem malejącym (DESC). Oznacza to, że rekordy zostaną zwrócone od "najwyższej" wartości klasy do "najniższej", zgodnie z regułami porównywania dla typu danych tej kolumny.
Krok 1: znajdź warunek filtrowania i ustal, które rekordy wchodzą do wyniku.
Krok 2: znajdź fragment sortowania i odczytaj kolumnę oraz kierunek.
Krok 3: dopiero wtedy dopasuj odpowiedź. To minimalizuje pomyłki kierunku i kolumny.
info

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

W praktyce zawodowej kluczowe jest to, że o kolejności zwracanych rekordów decyduje klauzula sortowania.

Źródła:

  • PostgreSQL Documentation (current): Queries - Sorting Rows (ORDER BY), https://www.postgresql.org/docs/current/queries-order.html - dostęp 2026-03-01
  • MySQL 8.0 Reference Manual: ORDER BY Optimization / ORDER BY Clause, https://dev.mysql.com/doc/refman/8.0/en/order-by-optimization.html - dostęp 2026-03-01
  • SQLite Documentation: SELECT - ORDER BY clause, https://www.sqlite.org/lang_select.html#orderby - dostęp 2026-03-01

Materiały:

  • Dokumentacja systemu bazy danych używanego na zajęciach (sekcja o sortowaniu wyników)
  • Ćwiczenia z interpretacji zapytań: filtrowanie vs sortowanie
  • Krótkie zadania typu: przewidź wynik sortowania dla różnych kierunków i kolumn

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego