Data/Sql

[SQL] With문 - With문 활용, 재귀 쿼리

재은초 2023. 6. 19. 13:47
반응형

With문의 활용

  • With문을 활용함으로써 Select문의 결과를 임시 집합으로 저장해두고 SQL문에서 마치 테이블처럼 해당 집합을 불러올 수 있다
---------- # WITH
WITH TMP1 AS (                        -- WITH문을 이용해서 해당 집합을 TMP1으로 지정하고
SELECT                                -- 아래 SELECT문에서 TMP1을 조회
	   FILM_ID
	 , TITLE
	 , (CASE
        WHEN LENGTH < 30 THEN 'SHORT'
        WHEN LENGTH >= 30
        AND LENGTH < 90 THEN 'MEDIUM'
        WHEN LENGTH > 90 THEN 'LONG'
        END) LENGTH
  FROM
	   FILM
)

SELECT * FROM TMP1; 
;

 

재귀 쿼리

  • 재귀 쿼리란 데이터 값 기준 부모 자식간의 관계를 표현하는 표현문
WITH RECURSIVE TMP1 AS (
SELECT
       EMPLOYEE_ID
     , MANAGER_ID
     , FULL_NAME
     , 0 LVL
  FROM
       TB_EMP_RECURSIVE_TEST
 WHERE MANAGER_ID IS NULL                      -- 관리자가 없는 사람은 최상위 관리자
UNION                                          -- 최상의 관리자부터 재귀 시작
SELECT
       E.EMPLOYEE_ID
     , E.MANAGER_ID
     , E.FULL_NAME
     , S.LVL + 1
  FROM
     TB_EMP_RECURSIVE_TEST E
   , TMP1 S 
 WHERE S.EMPLOYEE_ID = E.MANAGER_ID            -- 사원ID와 관리자 ID를 조인
) 
SELECT EMPLOYEE_ID, MANAGER_ID, LPAD(' ', 4 * (LVL)) || FULL_NAME AS FULL_NAME FROM TMP1;

 

Reference

  • Fast Campus, 모두를 위한 SQL/DB 올인원 패키지 온라인 강의

 

 

반응형