Oracle(12c 이상)에서 다음 SQL 을 실행한 결과로 옳은 것은… | [SQLD] SQL 개발자 기출유형 모의고사 3회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 3회
Oracle(12c 이상)에서 다음 SQL 을 실행한 결과로 옳은 것은?[상품]
| 상품코드 | 분류 | 판매량 |
|---|---|---|
| P1 | 식품 | 120 |
| P2 | 생활 | (null) |
| P3 | 식품 | 90 |
| P4 | 가전 | 150 |
| P5 | 생활 | 90 |
| P6 | 가전 | 90 |
| P7 | 식품 | 60 |
SELECT 상품코드, 판매량
FROM (SELECT 상품코드, 판매량
FROM 상품
ORDER BY 판매량 DESC NULLS LAST
FETCH FIRST 3 ROWS WITH TIES) T
ORDER BY 판매량 DESC, 상품코드;1
| 상품코드 | 판매량 |
|---|---|
| P3 | 90 |
| P5 | 90 |
| P6 | 90 |
| P7 | 60 |
2
| 상품코드 | 판매량 |
|---|---|
| P2 | (null) |
| P4 | 150 |
| P1 | 120 |
3
| 상품코드 | 판매량 |
|---|---|
| P4 | 150 |
| P1 | 120 |
| P3 | 90 |
| P5 | 90 |
| P6 | 90 |
4
| 상품코드 | 판매량 |
|---|---|
| P4 | 150 |
| P1 | 120 |
| P3 | 90 |
해설
WITH TIES 는 세 번째 행의 판매량 90 과 같은 값을 가진 행을 모두 함께 가져오므로 P4·P1 에 90 인 P3·P5·P6 이 더해져 5행이 된다.
NULLS LAST 로 판매량 NULL 인 P2 는 맨 뒤로 밀려 제외되고, 바깥 ORDER BY 가 동점 행을 상품코드 순으로 정렬한다.
- 3행만 나온 표는 ROWS ONLY 처럼 동점 행을 버린 경우다.
- P2 가 들어간 표는 NULLS LAST 를 무시하고 Oracle 기본 정렬을 적용한 경우다.
- P7 이 들어간 표는 판매량을 오름차순으로 정렬해 뽑은 경우다.
오류나 개정된 내용이 보이면 알려주세요