Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[위치]위… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[위치]
| 위치코드 | 상위코드 | 위치명 |
|---|---|---|
| C0 | (null) | 센터 |
| Z1 | C0 | A구역 |
| Z2 | C0 | B구역 |
| R1 | Z1 | 1번랙 |
| R2 | Z1 | 2번랙 |
| R3 | Z2 | 3번랙 |
| B1 | R1 | 1-1칸 |
| B2 | R2 | 2-1칸 |
SELECT 위치코드, LEVEL AS 깊이 FROM 위치 START WITH 위치코드 = 'Z1' CONNECT BY PRIOR 위치코드 = 상위코드 ORDER BY 깊이, 위치코드;
1
| 위치코드 | 깊이 |
|---|---|
| Z1 | 2 |
| R1 | 3 |
| R2 | 3 |
| B1 | 4 |
| B2 | 4 |
2
| 위치코드 | 깊이 |
|---|---|
| Z1 | 1 |
| C0 | 2 |
3
| 위치코드 | 깊이 |
|---|---|
| R1 | 1 |
| R2 | 1 |
| B1 | 2 |
| B2 | 2 |
4
| 위치코드 | 깊이 |
|---|---|
| Z1 | 1 |
| R1 | 2 |
| R2 | 2 |
| B1 | 3 |
| B2 | 3 |
해설
PRIOR 위치코드 = 상위코드는 앞 행의 코드를 상위코드로 가진 자식을 찾는 순방향 전개이고, START WITH 로 고른 Z1 이 LEVEL 1 이 된다.Z1 아래 R1·R2 가 2, 그 아래 B1·B2 가 3 으로 붙고, 다른 구역의 R3 와 상위인 C0 은 결과에 들어오지 않는다.
- Z1 이 2로 시작하는 결과는 LEVEL 을 루트 C0 기준으로 센 경우이다.
- Z1·C0 결과는 위로 올라가는 역방향 전개로 본 경우이다.
- Z1 이 빠진 결과는 시작 행이 결과에 포함되지 않는다고 본 경우이다.
오류나 개정된 내용이 보이면 알려주세요