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.