2013-02-22 80 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讓我知道!