오늘은 CONNECT BY를 이용한 계층형 쿼리에 대해 알아보도록 하겠습니다.
계층형 쿼리란 무엇인가?
계층형 구조는 상하 관계의 계층적 구조로 이루어진 형태를 말합니다. 흔히 트리형태라고 생각하셔도 될 것 같은데요
예를들어보면 특정 회사의 '본부-> 부서 -> 팀 -> 파트' 처럼 계층적으로 이루어진 형태라고 보시면 됩니다.
CONNECT BY 쿼리는 계층 정보를 표현하기 위해 START WITH와 같이 쓰이며 START WITH ~ CONNECT BY 형태로 사용가능한 쿼리입니다.
사용법
1. START WITH 절에 시작 조건을 넣고
2. CONNECT BY 절에 연결할 조건을 넣습니다.
아래 EMP 테이블 데이터로 예를 들어보겠습니다.
SELECT * FROM EMP;
위 데이터는 EMP테이블의 데이터이고 계층형 쿼리를 사용하여 데이터를 표현해보면
SELECT EMPNO,JOB, ENAME, MGR FROM EMP START WITH JOB = 'PRESIDENT' CONNECT BY PRIOR EMPNO = MGR; |
위와 같이 계층형 쿼리를 작성하였을 때
JOB='PRESIDENT'인 ROW를 시작점으로 하여
이전의 EMPNO와 MGR이 같은 행을 가져오는 쿼리입니다.
아래 결과값처럼 JOB = 'PRESIDENT'인 KING을 시작점으로 해서 트리형태의 계층형으로 표현되는 것을 확인하실 수 있습니다.
계층이기 때문에 LEVEL이 존재하고, 아래 결과값을 바탕으로 LEVEL을 확인해보면
LEVEL 1 : / KING /
LEVEL 2 : / JONES , BLAKE, CLARK /
LEVEL 3 : / SCOTT, FORD, ALLEN, WARD, MARTIN, TURNER, JAMES, MILLER /
LEVEL 4 : / ADAMS, SMITH /
이렇게 LEVEL이 구별되어 있는 것을 알 수 있습니다.
이상으로 CONNECT BY 사용법에 대해 알아보았습니다.
'IT 이것저것' 카테고리의 다른 글
[알고리즘] LeetCode/14. Longest Common Prefix/python 솔루션 (3) | 2023.02.27 |
---|---|
[컴퓨터] 한글영어 전환 안될 때 (1) | 2023.02.18 |
[네트워크] 엣지컴퓨팅(Edge Computing)이란 무엇인가? (3) | 2023.02.10 |
[네트워크] CDN(Contents Delivery Network)의 정의, 특징, 활용사례 (3) | 2023.02.10 |
쓰레드(Thread)란? 쓰레드와 프로세스 차이 (3) | 2023.02.08 |
댓글