W relacyjnych bazach danych do obliczania średniej arytmetycznej wartości w kolumnie liczbowej stosuje się funkcję agregującą AVG(). Funkcje agregujące przetwarzają wiele wierszy i zwracają jedną wartość (np. średnią, sumę, minimum).
Dlatego poprawna postać zapytania ma postać:
SELECT AVG(pensja) FROM pracownicy
Kluczowe elementy są dwa:
- AVG(pensja) – wskazuje, że liczymy średnią z kolumny pensja. Kolumna powinna mieć typ liczbowy, bo średnia dotyczy liczb.
- FROM pracownicy – określa tabelę, z której pobierane są wiersze do agregacji.
Odpowiedź z VAR(pensja) nie spełnia warunku zadania, bo dotyczy wariancji, a nie średniej. Propozycja z FROM nazwisko jest też nielogiczna, ponieważ nazwisko jest nazwą pola (kolumny), a nie tabeli. Zapytanie VAR(pracownicy) INTO pensja miesza pojęcia: jako argument funkcji podano nazwę tabeli zamiast kolumny oraz zastosowano INTO w sposób niepasujący do prostego zwrócenia wyniku. Z kolei AVG(nazwisko) INTO pensja próbuje liczyć średnią z pola tekstowego, co jest błędem typu danych i sensu obliczenia.
W praktyce, jeśli trzeba policzyć średnią dla części pracowników (np. tylko pełnoletnich), dopisuje się warunek WHERE, a jeśli dla grup (np. działów) – stosuje się GROUP BY. W tym zadaniu wystarcza jednak podstawowa agregacja całej tabeli.