다음 SQL 의 실행 결과로 옳은 것은?[온라인예매]회원번호금액7120… | [SQLD] SQL 개발자 기출유형 모의고사 9회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 9회
다음 SQL 의 실행 결과로 옳은 것은?[온라인예매]
| 회원번호 | 금액 |
|---|---|
| 7 | 12000 |
| 3 | 9000 |
[현장예매]
| 회원번호 | 금액 |
|---|---|
| 5 | 12000 |
| 3 | 9000 |
SELECT 회원번호 AS 회원, 금액 FROM 온라인예매 UNION ALL SELECT 회원번호, 금액 FROM 현장예매 ORDER BY 금액 DESC, 회원;
1
| 회원번호 | 금액 |
|---|---|
| 5 | 12000 |
| 7 | 12000 |
| 3 | 9000 |
| 3 | 9000 |
2
| 회원 | 금액 |
|---|---|
| 5 | 12000 |
| 7 | 12000 |
| 3 | 9000 |
| 3 | 9000 |
3
| 회원 | 금액 |
|---|---|
| 7 | 12000 |
| 3 | 9000 |
| 5 | 12000 |
| 3 | 9000 |
4
| 회원 | 금액 |
|---|---|
| 5 | 12000 |
| 7 | 12000 |
| 3 | 9000 |
해설
집합 연산의 ORDER BY 는 맨 끝에 한 번만 쓰여 합쳐진 전체 결과를 정렬하고, 결과 열 이름과 정렬 키는 첫 SELECT 의 별칭 회원을 따른다.
UNION ALL 은 중복을 지우지 않아 (3, 9000) 두 행이 모두 남고, 금액 내림차순 뒤 회원 오름차순으로 5·7·3·3 순이 된다.
- 온라인 행 뒤에 현장 행이 붙은 표는 정렬이 각 SELECT 에만 적용된다고 본 것이다.
- 3행 표는 UNION 처럼 중복을 제거한 결과이다.
- 열 이름이 회원번호인 표는 첫 SELECT 의 별칭을 무시한 것이다.
오류나 개정된 내용이 보이면 알려주세요