我正在编写一个查询来查找收入高于其部门平均工资的员工。我需要显示员工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
最佳答案
更有效地使用分析:
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
关于sql - Oracle显示所有工资高于部门平均水平的员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992412/