SQL 자격검정 실전문제
87번 문제
TAB1
C1 | C2 | C3 |
1 | A | |
2 | 1 | B |
3 | 1 | C |
4 | 2 | D |
SQL
SELECT C3
FROM TAB1
START WITH C2 IS NULL
CONNECT BY PRIOR C1 = C2
ORDER SIBLINGS BY C3 DESC
1. START WITH
START WITH C2 IS NULL
=> C2가 NULL인 값이 시작 값
1 . NULL . A
결과
A
2. CONNECT BY PRIOR C1 = C2, ORDER SIBLINGS BY C3 DESC
CONNECT BY PRIOR C1 = C2
PRIOR (이전에) 있는 C1의 값이 C2와 같은 것
=> PRIOR (이전에) 있는 C1의 값 => C3 A의 C1에 있는 값 1
C2가 1인 ROW를 찾아라 => C3의 B, C3의 C
찾은 값
2 . 1 . B
3 . 1 . C
ORDER SIBLINGS BY C3 DESC
★같은 레벨(같은 C2값 때문)에 있을 경우 C3를 기준으로 내림차순(높은값(C)->낮은값(B))
결과
A
C
B
3. PRIOR
PRIOR (이전에) 있는 C1의 값이 C2와 같은 것
=> PRIOR (이전에) 있는 C1의 값 => C3 B의 C1에 있는 값 2
C2가 2인 ROW를 찾아라 => C3의 D
결과
A
C
B
D
정렬 순서상 2번째 표시될 값을 구한다.