계층쿼리에서 행의 관계파악

2024. 3. 7. 00:06DBMS/SQLQuery

반응형

 

 

 

 

■ CONNECT BY ROOT

 

쿼리의 시작점을 지정하여 계층 구조의 루트 노드를 반환하고 계층 구조의 가장 상위 레벨을 식별하는 데 사용된다.
  

 

SELECT EMPNO, ENAME, LEVEL, CONNECT_BY_ROOT ENAME AS ROOT_NAME,JOB,MGR
FROM EMP
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR IS NULL;




 CONNECT BY ISLEAF: 현재 행이 말단 노드인지 여부를 나타내는 논리값을 반환한다.

SELECT EMPNO, ENAME, CONNECT_BY_ISLEAF AS IS_LEAF,MGR,JOB
FROM EMP
START WITH MGR IS NULL
CONNECT BY PRIOR EMPNO = MGR;

 

  계층 쿼리에서 현재 행이 자식 노드인지 여부를 나타내는 가상 열은 현재 행이 말단 노드(leaf)인 경우 1을, 그렇지 않은 경우 0을 반환한다.

 | EMPNO | ENAME | MGR   |
|-------|-------|-------|
| 7839  | KING  | NULL  |
| 7566  | JONES | 7839  |
| 7698  | BLAKE | 7839  |
| 7782  | CLARK | 7839  |
| 7788  | SCOTT | 7566  |
| 7844  | TURNER| 7698  |



 

 
SELECT EMPNO, ENAME, CONNECT_BY_ISLEAF AS IS_LEAF
FROM EMP
START WITH EMPNO = 7839
CONNECT BY PRIOR EMPNO = MGR;



결과는 다 

| EMPNO | ENAME | IS_LEAF |
|-------|-------|---------|
| 7839  | KING  | 0       |
| 7566  | JONES | 0       |
| 7788  | SCOTT | 1       |
| 7698  | BLAKE | 0       |
| 7844  | TURNER| 1       |
| 7782  | CLARK | 1       |



  KING 밑에는 JONES와 BLAKE이 있으므로 둘 다 말단 노드가 아니다. 그러나 JONES 아래에는 SCOTT가 있으므로 SCOTT는 말단 노드이다. 같은 방식으로 BLAKE 아래에는 TURNER가 있으므로 TURNER는 말단 노드이다. CLARK는 자식이 없으므로 말단 노드이다.



반응형

'DBMS > SQLQuery' 카테고리의 다른 글

RATIO_TO_REPORT  (0) 2024.03.08
Window Function  (0) 2024.03.08
속성 별 최대 값 행만 출력  (0) 2024.03.06
SUM() OVER (PARTITION BY) 그룹별 합계 정렬  (0) 2024.03.06
ROWS BETWEEN unbounded preceding and unbounded FOLLOWING  (0) 2024.03.04