Zapytanie składa się z dwóch części: zapytania głównego oraz podzapytania w klauzuli WHERE.
1) Co robi podzapytanie?
Fragment (SELECT AVG(Pensja) FROM Pracownicy) jest podzapytaniem skalarnym, czyli takim, które w tym kontekście powinno zwrócić jedną wartość. Funkcja AVG(Pensja) oblicza średnią arytmetyczną wartości w kolumnie Pensja dla wszystkich wierszy tabeli Pracownicy (pomijając wartości NULL, jeśli występują w danym silniku SQL).
2) Jak działa WHERE z podzapytaniem?
Warunek Pensja > (…) porównuje pensję konkretnego pracownika (z bieżącego wiersza przetwarzanego przez zapytanie główne) z obliczoną wcześniej średnią. Do wyniku przechodzą tylko te rekordy, dla których pensja jest większa od średniej.
3) Co zostanie zwrócone w SELECT?
W części SELECT wskazano tylko dwie kolumny: Imię i Nazwisko. Oznacza to, że wynikiem będzie lista imion i nazwisk pracowników spełniających warunek, a nie same wartości pensji ani statystyka.
Dlaczego pozostałe odpowiedzi są błędne?
- Odpowiedź mówiąca o pracownikach zarabiających mniej niż średnia jest niezgodna z operatorem porównania, bo w zapytaniu użyto >, a nie <.
- Stwierdzenie, że zapytanie zwróci "średnią pensję" myli wynik podzapytania z wynikiem zapytania głównego. Średnia jest tylko wartością pomocniczą do filtrowania, a nie kolumną wypisywaną w rezultacie.
- Opcja o "liczbie pracowników" byłaby poprawna dopiero przy użyciu agregacji w zapytaniu głównym, np. z COUNT(*). Tutaj nie ma COUNT, więc wynik to wiersze z danymi osobowymi, nie jedna liczba.
Wskazówka egzaminacyjna: gdy widzisz w odpowiedziach "liczbę …", sprawdź, czy w zapytaniu jest funkcja zliczająca (COUNT) lub grupowanie. Gdy jej nie ma, najczęściej wynikiem będzie lista rekordów/kolumn wskazanych w SELECT.