다음 SQL의 결과 행 수는?[배송]배송번호지역상태D1서울완료D2서울완… | [SQLD] SQL 개발자 기출유형 모의고사 3회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 3회
다음 SQL의 결과 행 수는?[배송]
| 배송번호 | 지역 | 상태 |
|---|---|---|
| D1 | 서울 | 완료 |
| D2 | 서울 | 완료 |
| D3 | 서울 | 취소 |
| D4 | 부산 | 완료 |
| D5 | 부산 | (null) |
| D6 | (null) | 완료 |
| D7 | (null) | 대기 |
| D8 | 부산 | 대기 |
| D9 | 서울 | 대기 |
| D10 | 부산 | (null) |
SELECT 지역, 상태, COUNT(*) AS 건수 FROM 배송 WHERE 상태 <> '취소' GROUP BY 지역, 상태 ORDER BY 지역, 상태;
1
5
2
7
3
6
4
4
해설
상태 <> '취소' 는 D3 뿐 아니라 상태가 NULL 인 D5·D10 도 UNKNOWN 이라 제외하고, 남은 7행을 (지역, 상태)로 묶으면 NULL 지역도 하나의 그룹이 된다.
그룹은 (서울,완료)·(서울,대기)·(부산,완료)·(부산,대기)·(NULL,완료)·(NULL,대기) 의 6개다.
- 지역이 NULL 인 두 그룹을 빼면 4행이 되지만 GROUP BY 는 NULL 을 버리지 않는다.
- NULL 지역을 한 그룹으로 합치면 5행이지만 상태가 달라 두 그룹이다.
- 상태 NULL 행을 남겨 (부산,NULL) 그룹을 만들면 7행으로 잘못 센다.
오류나 개정된 내용이 보이면 알려주세요