将关联的oracle子查询转换为单个查询



嗨,我有两个表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

相关内容

  • 没有找到相关文章

最新更新