728x90
반응형
[예전에 올렸던 자료]
계층형 질의
참고로, 아래 설명하는 내용들은 '쏭즈 SQLD' 강의 내용을 바탕으로 만들었습니다.
출처: https://youtu.be/JxyMJNX24LY
계층형 질의
계층형 질의: 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용
ORACLE - 계층형 쿼리 지원
SQL Server - 계층형 쿼리 미지원. 기본적인 문장(CTE) 활용하여 생성
* CTE (Common Table Expression)
<계층형 질의 일반적인 SQL문>
* NO CYCLE: 싸이클이 생기는 경우 런타임 오류가 발생하니 NO CYCLE 입력하여 1 싸이클만 생성
CONNECT BY PRIOR 자식 칼럼 = 부모 칼럼 ---> 부모에서 자식으로 트리 구성 (순방향) CONNECT BY 자식 칼럼 = PRIOR 부모 칼럼 ---> 자식에서 부모로 트리 구성 (역방향) CONNECT BY PRIOR 부모 칼럼 = 자식 칼럼 ---> 자식에서 부모로 트리 구성 (역방향) CONNECT BY 부모 칼럼 = PRIOR 자식 칼럼 ---> 부모에서 자식으로 트리 구성 (순방향) |
프자부순! 만 외우면 크게 헷갈리지 않는다.
(PRIOR 자식 = 부모 > 순방향 전개)
* PRIOR 키워드는 SELECT 나 WHERE 절에도 사용 가능
가상 칼럼
- LEVEL: 루트 데이터를 1, 그 아래 노드는 2, 루트 데이터와 거리가 멀어질수록 점차 증가 (상하 관계 없이)
- CONNECT_BY_ISLEAF: 해당 데이터가 리프 노드이면 1, 아니면 0
CONNECT BY 부모 = PRIOR 자식 > 순방향 전개
CONNECT BY PRIOR 부모 = 자식 > 역방향 전개
다른 데이터를 루트 노드로 설정할 때
예제1
[SQL 자격검정 실전문제 (노랭이) P.94 87번 문제]
아래와 같은 데이터 상황에서 아래의 SQL을 수행할 경우 정렬 순서상 2번째에 표시될 값을 적으시오.
<TAB1>
C1 | C2 | C3 |
1 | A | |
2 | 1 | B |
3 | 1 | C |
4 | 2 | D |
SELECT C3 FROM TAB1 START WITH C2 IS NULL CONNECT BY PRIOR C1 = C2 ORDER SIBLINGS BY C3 DESC; |
▶ 풀이
▶ 답: C
C3 |
A |
C |
B |
D |
예제2
[SQL 자격검정 실전문제 (노랭이) P.95 89번 문제]
다음 중 아래와 같은 사원 테이블에 대해서 SQL을 수행하였을 때의 결과로 가장 적절한 것은?
<테이블: 사원>
사원번호(PK) | 사원명 | 입사일자 | 매니저사원번호(FK) |
001 | 홍길동 | 2012-01-01 | NULL |
002 | 강감찬 | 2012-01-01 | 001 |
003 | 이순신 | 2013-01-01 | 001 |
004 | 이민정 | 2013-01-01 | 001 |
005 | 이병헌 | 2013-01-01 | NULL |
006 | 안성기 | 2014-01-01 | 005 |
007 | 이수근 | 2014-01-01 | 005 |
008 | 김병만 | 2014-01-01 | 005 |
<SQL> SELECT 사원번호, 사원명, 입사일자, 매니저사원번호 FROM 사원 START WITH 매니저사원번호 IS NULL CONNECT BY PRIOR 사원번호 = 매니저사원번호 AND 입사일자 BETWEEN '2013-01-01' AND '2013-12-31' ORDER SIBLINGS BY 사원번호; |
▶ 풀이
▶ 답:
사원번호(PK) | 사원명 | 입사일자 | 매니저사원번호(FK) |
001 | 홍길동 | 2012-01-01 | NULL |
003 | 이순신 | 2013-01-01 | 001 |
004 | 이민정 | 2013-01-01 | 001 |
005 | 이병헌 | 2013-01-01 | NULL |
※ '홍길동' 사원의 경우, 입사일자가 조건에 부합하지 않으나, 루트 데이터는 항상 출력 값에 포함 됨.
루트 데이터 (홍길동 - 001 / 이병헌 - 005)
728x90
반응형
'자격증 > SQLD' 카테고리의 다른 글
SQL 집계함수 - SUM (0) | 2024.02.26 |
---|---|
SQLD 2과목 SQL 활용 - 서브쿼리 (보강) (0) | 2024.02.19 |
SQLD 2과목 SQL 활용 - 셀프 조인(보강) (0) | 2024.02.16 |
[SQLD] 셀프조인, 계층형 질의 이해를 위한 꿀팁 영상 (0) | 2024.02.15 |
[SQLD 기출문제 ] 1과목 - 엔터티 (1) | 2024.02.03 |