Wynikiem uruchomienia przedstawionego zapytania SQL jest
SELECT AVG(srednia) FROM Uczniowie WHERE klasa = '3a';
A. średnia arytmetyczna średnich ocen uczniów klasy 3a.
B. najwyższa średnia ocen w klasie 3a.
C. suma średnich ocen uczniów klasy 3a.
D. liczba uczniów klasy 3a.
Poprawna odpowiedź to średnia arytmetyczna średnich ocen uczniów klasy 3a. Klauzula WHERE klasa = '3a' najpierw ogranicza zestaw rekordów do uczniów należących do tej klasy. Następnie funkcja agregująca AVG(srednia) oblicza średnią arytmetyczną wartości z kolumny srednia dla przefiltrowanych wierszy. Wynik zapytania jest jedną liczbą, a nie listą uczniów. Do zapamiętania: SELECT AVG(kolumna) FROM tabela WHERE warunek; służy do liczenia średniej wartości wybranej kolumny po zastosowaniu warunku. W praktyce takie zapytanie wykorzystuje się np. do porównywania wyników klas, oceniania frekwencji albo analizowania sprzedaży. Typowa pułapka to mylenie AVG z COUNT, MAX lub SUM - każda z tych funkcji agregujących zwraca inny rodzaj wyniku.
To zapytanie nie liczy rekordów ani nie wybiera wartości skrajnej. Fragment WHERE klasa = '3a' tylko filtruje dane, czyli zostawia do obliczeń uczniów z klasy 3a. Liczba uczniów klasy 3a byłaby wynikiem funkcji COUNT(*), ewentualnie COUNT(nazwa_kolumny), bo COUNT służy do zliczania wierszy. Najwyższa średnia ocen w klasie 3a wymagałaby funkcji MAX(srednia), która zwraca największą wartość z kolumny. Suma średnich ocen uczniów klasy 3a byłaby obliczana przez SUM(srednia), czyli dodanie wszystkich wartości z kolumny srednia. W przedstawionym zapytaniu użyto AVG(srednia), dlatego poprawny wynik to średnia arytmetyczna średnich ocen uczniów klasy 3a. Typowy błąd polega na skupieniu się tylko na warunku klasa = '3a' i pominięciu nazwy funkcji agregującej, a to ona decyduje, czy wynik jest liczbą rekordów, maksimum, sumą czy średnią.