2013-02-22 66 views
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 

查找其工资超过其部门的平均工资

回答

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; 
0

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

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

如果有任何澄清plz让我知道!