계층구조: 3개의 글
하위에서 상위로 누적 합계 구하기아래는 현재행을 시작점으로 하위에서 상위로 누적합계를 구하는 예제이다.[그림] 계산예시SELECT empno , LEVEL lv , LPAD(' ', (LEVEL-1)*2, ' ') || ename AS ename , sal , (SELECT SUM(sal) FROM emp START WITH empno = a.empno CONNECT BY PRIOR empno = mgr ) sum_sal FROM emp a START WITH mgr IS NULL CONNECT BY PRIOR empno = mgr; EMPNO LV ENAME SAL SUM_SAL------- ---------- -------------------- ---------- ---------- 7839 1 K..
Oracle10g 부터 CONNECT BY 절에서 제공하는 CONNECT_BY_ROOT, SYS_CONNECT_BY_PATH, CONNECT_BY_ISLEAF 기능에 대해서 알아보자CONNECT_BY_ROOT계층구조 쿼리에서 LEVEL이 0인 최상위 로우의 정보를 얻어 올 수 있다.SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno,CONNECT_BY_ROOT empno "Root empno", level FROM emp START WITH job='PRESIDENT'CONNECT BY PRIOR empno=mgr; ENAME EMPNO Root empno LEVEL------------------ ------- ----------- -------KING 7839..
계층구조 쿼리란?오라클 데이터베이스 scott 유저의 emp 테이블을 보면 empno와 mgr컬럼이 있으며, mgr 컬럼 데이터는 해당 사원의 관리자의 empno를 의미 한다.예를 들어서 아래의 데이터를 보면EMPNO ENAME SAL MGR------ ------- ------ ------ 7369 SMITH 800 7902 7902 FORD 3000 7566 - empno 7369사원의 관리자는 7902의 empno를 가진 사원이며- empno 7902사원의 관리자는 7566의 empno를 가진 사원이다.이런 상위 계층과 하위계층의 관계를 오라클에서는 START WITH와 CONNECT BY를 이용해서 쉽게 조회 할 수 있다.계층구조 쿼리 SynctaxSTART WITH- 계층 질의의 루트(부모행)로..