Проблема не в AVG()
.Вы можете сделать:
SELECT FLOOR(AVG(ci.POPULATION))
FROM COUNTRY c INNER JOIN
CITY ci
ON c.CODE = ci.COUNTRYCODE;
Это возвращает одну строку, которая является общей средней численностью населения для всех городов в базе данных.
Проблема заключается в том, что вы делаете:
SELECT c.CONTINENT, FLOOR(AVG(ci.POPULATION))
. . .
Часть CONTINENT
неагрегирована.Механизм SQL должен знать, что с ним делать.Ввод ключа в GROUP BY
:
GROUP BY c.CONTINENT
говорит о том, что вы хотите одну строку в наборе результатов для каждого значения в CONTINENT
.