-
[Oracle] WITH 문RDS/Oracle 2020. 9. 19. 10:36반응형
WITH문 이란?
오라클9 이후 버전부터 사용이 가능하며, 이름을 정의한 SubQuery를 사용하는 구문입니다.
WITH문 장점
- 전제척인 가독성을 높이고, 재사용할 수 있는 장점이 있습니다.
- 일반 Subquery는 서로 참조할 수 없지만, WITH문은 서로 참조가 가능합니다.
- 한번만 사용되면 Inline View, 두번이상 사용되면 Materialize View로 처리합니다.
WITH문 문법
123456WITH [ALIAS명] AS(/* SQL Body */)SELECT *FROM [ALIAS명];cs WITH문 예제
1.사원명, 부서명 조회
123456789101112131415161718/* Sub Query를 이용하는 방법 */SELECT *FROM ( SELECT T1.ENAME, T2.DNAMEFROM EMP T1, DEPT T2WHERE T1.DEPTNO = T2.DEPTNO);/* WITH 문을 이용하는 방법 */WITH TEMP01 AS(SELECT T1.ENAME, T2.DNAMEFROM EMP T1, DEPT T2WHERE T1.DEPTNO = T2.DEPTNO)SELECT *FROM TEMP01;cs 2.사원명, 부서명, 부서의 사원 수 조회
1234567891011121314151617181920212223242526272829/* Sub Query를 이용하는 방법 */SELECT T3.ENAME, T4.DNAME, T4.EMP_CNTFROM EMP T3, ( SELECT T2.DEPTNO, T2.DNAME, COUNT(*) AS EMP_CNTFROM EMP T1, DEPT T2WHERE T1.DEPTNO = T2.DEPTNOGROUP BY T2.DEPTNO, T2.DNAME) T4WHERE T3.DEPTNO = T4.DEPTNOORDER BY T3.DEPTNO, T3.ENAME;/* WITH 문을 이용하는 방법 */WITH TEMP01 AS(SELECT T2.DEPTNO, T2.DNAME, COUNT(*) AS EMP_CNTFROM EMP T1, DEPT T2WHERE T1.DEPTNO = T2.DEPTNOGROUP BY T2.DEPTNO, T2.DNAME)SELECT T1.ENAME, T2.DNAME, T2.EMP_CNTFROM EMP T1, TEMP01 T2WHERE T1.DEPTNO = T2.DEPTNOORDER BY T1.DEPTNO, T1.ENAME;cs 반응형'RDS > Oracle' 카테고리의 다른 글
[Oracle] WINDOWNING 절 (0) 2020.09.12 [Oracle] COUNT 함수 (0) 2020.09.05 [Oracle] ROW_NUMBER 함수 (0) 2020.08.30 [Oracle] ROWNUM 함수 (0) 2020.08.30 [Oracle] 윈도우 함수(Window Funtion)_그룹 내 비율 함수 (0) 2019.03.26