【问题标题】:converting correlated oracle subquery to single query将相关的 oracle 子查询转换为单个查询
【发布时间】:2021-08-23 22:33:12
【问题描述】:

您好,我有两个表 EMP 和 Dept(数据为 oracle 的普通 emp 和 dept 表) 我想在不使用相关子查询的情况下找到收入超过他们自己部门的 avg(sal) 的员工数量。我写了如下查询

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 

这让我得到了输出,但是我如何用一个没有内联查询的查询来重写它,如上所示。

【问题讨论】:

    标签: oracle correlated-subquery


    【解决方案1】:

    你可以使用analytic window functions:

    SELECT *
    from (
      SELECT 
        e.*
        ,avg(sal)over(partition by deptno) avgsal
      from emp e
    )
    where avgsal>sal
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2018-11-01
      • 2013-07-10
      • 1970-01-01
      相关资源
      最近更新 更多