0

EMP テーブル

EMPNO ENAME  JOB        MGR  HIREDATE    SAL   COMM  DEPTNO
7369  SMITH  CLERK      7902  17-DEC-80  800         20
7499  ALLEN  SALESMAN   7698  20-FEB-81  1600  300   30
7521  WARD   SALESMAN   7698  22-FEB-81  1250  500   30
7566  JONES  MANAGER    7839  02-APR-81  2975        20
7654  MARTIN SALESMAN   7698  28-SEP-81  1250  1400  30
7698  BLAKE  MANAGER    7839  01-MAY-81  2850        30
7782  CLARK  MANAGER    7839  09-JUN-81  2450        10
7788  SCOTT  ANALYST    7566  19-APR-87  3000        20
7839  KING   PRESIDENT        17-NOV-81  5000        10
7844  TURNER SALESMAN   7698  08-SEP-81  1500     0  30
7876  ADAMS  CLERK      7788  23-MAY-87  1100        20
7900  JAMES  CLERK      7698  03-DEC-81  950         30
7902  FORD   ANALYST    7566  03-DEC-81  2900        20
7934  MILLER CLERK      7782  23-JAN-82  1300        10

給与が部門の平均給与を超えるすべての従業員を検索する

4

2 に答える 2

0

これは 2 つの方法で行うことができます... 1 つのパーティション (上記) と、相関クエリを使用して同じことを行うコードは次のとおりです。

SELECT eemp.*
 FROM emp  eemp
 WHERE eemp.SAL > (SELECT avg(SAL)
    FROM emp
    WHERE DEPTNO = eemp.DEPTNO);

説明があれば教えてください!

于 2013-02-22T13:57:41.480 に答える
0

これはそれを行う必要があります:

select empno, ename, job, mgr, hiredate, sal, comm, deptno
  from (select e.*, avg(sal) over (partition by deptno) avgsal
          from emp e)
 where sal > avgsal;
于 2013-02-22T10:10:24.707 に答える