Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[승무원]… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 4회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[승무원]
| 사번 | 이름 | 상급자사번 |
|---|---|---|
| 1 | 강기장 | (null) |
| 2 | 남부기장 | 1 |
| 3 | 도사무장 | 1 |
| 4 | 류승무원 | 3 |
| 5 | 문승무원 | 3 |
| 6 | 박승무원 | 2 |
SELECT LEVEL AS LV, 사번, 이름 FROM 승무원 WHERE 사번 <> 3 START WITH 사번 = 1 CONNECT BY PRIOR 사번 = 상급자사번 ORDER BY LV, 사번;
1
| LV | 사번 | 이름 |
|---|---|---|
| 1 | 1 | 강기장 |
| 2 | 2 | 남부기장 |
| 3 | 4 | 류승무원 |
| 3 | 5 | 문승무원 |
| 3 | 6 | 박승무원 |
2
| LV | 사번 | 이름 |
|---|---|---|
| 1 | 1 | 강기장 |
| 2 | 2 | 남부기장 |
| 3 | 6 | 박승무원 |
3
| LV | 사번 | 이름 |
|---|---|---|
| 1 | 1 | 강기장 |
| 2 | 2 | 남부기장 |
| 2 | 4 | 류승무원 |
| 2 | 5 | 문승무원 |
| 3 | 6 | 박승무원 |
4
| LV | 사번 | 이름 |
|---|---|---|
| 1 | 1 | 강기장 |
| 2 | 2 | 남부기장 |
| 2 | 3 | 도사무장 |
| 3 | 4 | 류승무원 |
| 3 | 5 | 문승무원 |
| 3 | 6 | 박승무원 |
해설
계층형 질의에서 WHERE 절은 전개가 끝난 뒤 적용되므로 도사무장(3) 한 행만 빠지고, 그 아래 류승무원·문승무원은 LEVEL 3 그대로 남아 5행이다.
START WITH 사번 = 1 에서 PRIOR 사번 = 상급자사번 으로 부모에서 자식 방향으로 내려가며, 깊이는 강기장 1, 남부기장·도사무장 2, 나머지 3이다.
- 도사무장 아래가 함께 사라진 표는 조건을 CONNECT BY 절에 둔 결과이다.
- 류승무원·문승무원이 LEVEL 2 인 표는 행을 거른 뒤 깊이를 다시 매긴다고 본 것이다.
- 도사무장이 남은 표는 WHERE 조건을 무시한 결과이다.
오류나 개정된 내용이 보이면 알려주세요