다음 SQL 의 실행 결과로 옳은 것은?[입고]입고번호창고품번수량1AP… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
다음 SQL 의 실행 결과로 옳은 것은?[입고]
| 입고번호 | 창고 | 품번 | 수량 |
|---|---|---|---|
| 1 | A | P1 | 30 |
| 2 | A | P1 | 30 |
| 3 | A | P2 | 50 |
| 4 | B | P3 | 40 |
| 5 | A | P3 | 20 |
[출고]
| 출고번호 | 창고 | 품번 | 수량 |
|---|---|---|---|
| 1 | A | P1 | 30 |
| 2 | A | P2 | 10 |
| 3 | B | P2 | 50 |
| 4 | A | P2 | 10 |
SELECT 품번, 수량, '입고' AS 구분 FROM 입고 WHERE 창고 = 'A' UNION SELECT 품번, 수량, '출고' FROM 출고 WHERE 창고 = 'A' ORDER BY 수량 DESC, 구분;
1
| 품번 | 수량 | 구분 |
|---|---|---|
| P2 | 50 | 입고 |
| P1 | 30 | 입고 |
| P1 | 30 | 출고 |
| P3 | 20 | 입고 |
| P2 | 10 | 출고 |
2
| 품번 | 수량 | 구분 |
|---|---|---|
| P2 | 50 | 입고 |
| P1 | 30 | 입고 |
| P1 | 30 | 입고 |
| P1 | 30 | 출고 |
| P3 | 20 | 입고 |
| P2 | 10 | 출고 |
| P2 | 10 | 출고 |
3
| 품번 | 수량 | 구분 |
|---|---|---|
| P2 | 50 | 입고 |
| P1 | 30 | 입고 |
| P3 | 20 | 입고 |
| P2 | 10 | 출고 |
4
| 품번 | 수량 | 구분 |
|---|---|---|
| P2 | 50 | 입고 |
| P1 | 30 | 출고 |
| P1 | 30 | 입고 |
| P3 | 20 | 입고 |
| P2 | 10 | 출고 |
해설
UNION 은 상수 열 구분까지 포함한 행 전체가 같을 때만 중복으로 보아, 입고 안의 P1·30 두 건과 출고 안의 P2·10 두 건은 각각 한 행이 되고 입고·출고의 P1·30 은 둘 다 남는다.
맨 끝의 ORDER BY 는 결합된 전체에 적용되어 수량 내림차순, 같은 수량이면 구분 오름차순으로 정렬된다.
- 7행 결과는 중복을 남기는 UNION ALL 로 본 경우이다.
- P1·30 출고 행이 빠진 결과는 구분 열을 무시하고 중복을 제거한 경우이다.
- 30 수량에서 출고가 먼저 온 결과는 구분을 내림차순으로 정렬한 경우이다.
오류나 개정된 내용이 보이면 알려주세요