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