Oracle向所有员工显示其部门的工资高于平均水平

Chr*_*son 3 sql oracle plsql ora-00904

我正在撰写查询,以查找收入高于其部门内平均工资的员工.我需要显示该部门的员工ID,工资,部门ID和平均工资.

我有一个几乎可以工作的查询,但它一直给我"ORA-00904:"AVG_SAL":无效的标识符"错误.我这样做是否正确 为什么我收到这个无效的标识符错误?

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 > avg_sal
ORDER BY avg_sal DESC
Run Code Online (Sandbox Code Playgroud)

Rus*_*llH 13

更高效地使用分析:

select employee_id, salary, department_id, avg_sal
from
(
  SELECT employee_id, salary, department_id, 
    round(avg(salary) over (partition by department_id), 2) avg_sal
  from emp
)
where salary > avg_sal
order by avg_sal desc
Run Code Online (Sandbox Code Playgroud)