嗨,我有两个表EMP和Dept(数据作为oracle的正常EMP和Dept表)我想在不使用相关子查询的情况下找到收入超过自己部门平均工资(工资)的员工人数。我写的查询如下
SELECT * from emp e JOIN
(SELECT avg(sal) avgsal,deptno
FROM emp group by deptno )avgsal_tab
on e.sal > avgsal_tab.avgsal where e.deptno =avgsal_tab.deptno
order by e.deptno
这得到了我的输出,但是我如何用一个没有内联查询的查询重写它,如上面所示。
您可以使用解析窗口函数:
SELECT *
from (
SELECT
e.*
,avg(sal)over(partition by deptno) avgsal
from emp e
)
where avgsal>sal