Ответ Импалера верен и фактически устраняет полученную ошибку.
Позвольте мне, однако, указать, что вам не нужен подзапрос для достижения вашей цели. Для фильтрации по агрегированному выражению вы можете использовать предложение having
, являющееся частью стандарта SQL:
select dept_name, avg(salary) as avg_salary
from instructor
group by dept_name
having avg(salary) > 42000;
Кроме того, MySQL расширяет стандарт и позволяет вам использовать псевдонимы столбцов в предложении having
, что, кроме того, упрощает запрос:
select dept_name, avg(salary) as avg_salary
from instructor
group by dept_name
having avg_salary > 42000;
Я ожидаю, что это решение должно быть более эффективным, чем использование подзапроса (если база данных не достаточно умна, чтобы обнаружить эту оптимизацию, в этом случае это будет эквивалентно с точки зрения производительности); и это, конечно, аккуратнее и легче для понимания.