Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[재고위치]… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[재고위치]
| 품목코드 | 보관구역 | 수량 |
|---|---|---|
| P1 | B | 30 |
| P2 | (null) | 10 |
| P3 | A | (null) |
| P4 | A | 50 |
| P5 | (null) | 40 |
| P6 | B | 20 |
SELECT 품목코드, 보관구역, 수량 FROM 재고위치 ORDER BY 보관구역 NULLS FIRST, 수량 DESC NULLS LAST;
1
| 품목코드 | 보관구역 | 수량 |
|---|---|---|
| P4 | A | 50 |
| P3 | A | (null) |
| P1 | B | 30 |
| P6 | B | 20 |
| P5 | (null) | 40 |
| P2 | (null) | 10 |
2
| 품목코드 | 보관구역 | 수량 |
|---|---|---|
| P2 | (null) | 10 |
| P5 | (null) | 40 |
| P4 | A | 50 |
| P3 | A | (null) |
| P6 | B | 20 |
| P1 | B | 30 |
3
| 품목코드 | 보관구역 | 수량 |
|---|---|---|
| P5 | (null) | 40 |
| P2 | (null) | 10 |
| P3 | A | (null) |
| P4 | A | 50 |
| P1 | B | 30 |
| P6 | B | 20 |
4
| 품목코드 | 보관구역 | 수량 |
|---|---|---|
| P5 | (null) | 40 |
| P2 | (null) | 10 |
| P4 | A | 50 |
| P3 | A | (null) |
| P1 | B | 30 |
| P6 | B | 20 |
해설
첫 정렬 키 보관구역은 NULLS FIRST 라 NULL 구역(P5·P2)이 맨 앞에 오고, 같은 구역 안에서는 수량 내림차순이다.
Oracle 은 DESC 에서 NULL 을 먼저 두지만 NULLS LAST 를 지정해 A 구역의 P3(수량 NULL)이 P4 뒤로 간다.
- ASC 기본값(NULL 마지막)을 적용하면 NULL 구역이 끝에 오지만 NULLS FIRST 가 우선한다.
- DESC 기본 NULL 위치를 따르면 P3 이 P4 앞에 오지만 NULLS LAST 로 바뀌었다.
- 수량을 오름차순으로 보면 P2·P6 이 먼저 오지만 DESC 가 지정되었다.
오류나 개정된 내용이 보이면 알려주세요