Не думаю, что вы можете ссылаться на псевдоним столбца (в нашем случае это avg_sal) в предложении WHERE.
Вам нужно будет повторить этот внутренний запрос, т. Е .:
SELECT employee_id, salary, department_id,
(SELECT ROUND(AVG(salary),2)
FROM employees e_inner
WHERE e_inner.department_id = e.department_id) AS avg_sal
FROM employees e
WHERE salary >
(SELECT ROUND(AVG(salary),2)
FROM employees e_inner
WHERE e_inner.department_id = e.department_id)
ORDER BY avg_sal DESC
Не очень хорошо с этими двумя внутренними запросами, но это самый простой способ исправить ошибку.
Обновление: Не проверяли это, но попробуйте следующее:
SELECT e.employee_id, e.salary, e.department_id, b.avg_sal
FROM employees e
INNER JOIN
(SELECT department_id, ROUND(AVG(salary),2) AS avg_sal
FROM employees
GROUP BY department_id) e_avg ON e.department_id = e_avg.department_id AND e.salary > e_avg.avg_sal
ORDER BY e_avg.avg_sal DESC