0

电磁脉冲表

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

这应该这样做:

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 回答
0

伙计,你可以通过两种方式做到这一点......一个分区(上面提到过)并且使用相关查询也做了同样的事情这里是代码:

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

如果有任何澄清请告诉我!

于 2013-02-22T13:57:41.480 回答