database/oracle

Sub Query

labj 2012. 3. 21. 20:48

-------------------------------------

Sub Query

-------------------------------------

- HAVING 절에서의 SUB Query 사용
SELECT job, MAX(sal) FROM emp
GROUP BY job
HAVING MAX(sal) > (SELECT MAX(sal) FROM emp WHERE job='SALESMAN');


- 다중열 sub Query  
- PAIRWISE Column 비교 : 두개의 컬럼을 묶어서 같은 경우만 참으로 보고 조회한다.
SELECT empno, ename, deptno, sal, comm
FROM emp
WHERE (sal, NVL(comm,-1)) IN (SELECT sal, NVL(comm,-1)
    FROM emp 
    WHERE deptno=30);


- Non PAIRWISE Column 비교 : 컬럼을 각각 비교 한다.
SELECT empno, ename, deptno, sal, comm
FROM emp
WHERE sal IN (SELECT sal
       FROM emp 
       WHERE deptno=30)
AND NVL(comm,-1) IN (SELECT NVL(comm,-1) FROM emp 
       WHERE deptno=30);


- FROM 절에서 Sub Query 사용
SELECT a.empno, a.ename, a.sal, a.deptno, b.avg
FROM emp a, (SELECT deptno, ROUNT(AVG(sal)) avg
      FROM emp
      GROUP BY deptno) b
WHERE a.deptno = b.deptno
AND a.sal > b.avg;

- 급여를 많이 받는 사원 순으로 앞에 랭킹을 붙여서 조회하시오.
- rownum은 sort 되기 전에 부여된다.
SELECT rownum, empno, ename, sal FROM
(select empno, ename, sal from emp ordr by sal desc);


'database > oracle' 카테고리의 다른 글

TABLESAPCE 이해2  (0) 2012.03.21
TABLESPACE 이해  (0) 2012.03.21
JOIN  (0) 2012.03.21
그룹 결과 제한 - HAVING 사용  (0) 2012.03.21
오라클에서 쿼리 실행결과 저장하기 방법  (0) 2012.03.21