Oracle 에서 다음 SQL 을 실행한 결과로 옳은 것은?[부서]부서… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 2회
Oracle 에서 다음 SQL 을 실행한 결과로 옳은 것은?[부서]
| 부서코드 | 부서명 | 상위부서 |
|---|---|---|
| D1 | 본사 | (null) |
| D2 | 영업본부 | D1 |
| D3 | 개발본부 | D1 |
| D4 | 국내영업 | D2 |
| D5 | 해외영업 | D2 |
| D6 | 백엔드 | D3 |
| D7 | 데이터 | D3 |
SELECT LEVEL, 부서명 FROM 부서 START WITH 상위부서 IS NULL CONNECT BY PRIOR 부서코드 = 상위부서 ORDER SIBLINGS BY 부서명;
1
| LEVEL | 부서명 |
|---|---|
| 2 | 개발본부 |
| 3 | 국내영업 |
| 3 | 데이터 |
| 3 | 백엔드 |
| 1 | 본사 |
| 2 | 영업본부 |
| 3 | 해외영업 |
2
| LEVEL | 부서명 |
|---|---|
| 1 | 본사 |
| 2 | 영업본부 |
| 3 | 국내영업 |
| 3 | 해외영업 |
| 2 | 개발본부 |
| 3 | 백엔드 |
| 3 | 데이터 |
3
| LEVEL | 부서명 |
|---|---|
| 1 | 본사 |
| 2 | 개발본부 |
| 2 | 영업본부 |
| 3 | 국내영업 |
| 3 | 데이터 |
| 3 | 백엔드 |
| 3 | 해외영업 |
4
| LEVEL | 부서명 |
|---|---|
| 1 | 본사 |
| 2 | 개발본부 |
| 3 | 데이터 |
| 3 | 백엔드 |
| 2 | 영업본부 |
| 3 | 국내영업 |
| 3 | 해외영업 |
해설
ORDER SIBLINGS BY는 부모 아래 자식이 바로 이어지는 계층 순서를 지키면서 같은 부모를 둔 형제끼리만 부서명 순으로 정렬한다.
본사 아래 개발본부가 영업본부보다 앞서고, 개발본부의 자식은 데이터·백엔드, 영업본부의 자식은 국내영업·해외영업 순으로 따라온다.
- 부서명만으로 전부 섞인 표는 일반 ORDER BY 부서명의 결과다.
- LEVEL별로 모은 표는 너비 우선 순서로 계층 전개를 오해한 것이다.
- 영업본부가 먼저인 표는 형제 정렬을 무시하고 부서코드 순으로 본 것이다.
오류나 개정된 내용이 보이면 알려주세요