계층쿼리에서 행의 관계파악
2024. 3. 7. 00:06ㆍDBMS/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 |