다음 SQL을 실행했을 때 결과 행 수는?[입고내역]입고번호창고코드입고… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
다음 SQL을 실행했을 때 결과 행 수는?[입고내역]
| 입고번호 | 창고코드 | 입고일 | 수량 |
|---|---|---|---|
| 1 | W1 | 2026-03-02 | 10 |
| 2 | W1 | 2026-03-15 | 20 |
| 3 | W1 | 2026-04-01 | 5 |
| 4 | W2 | 2026-03-09 | 7 |
| 5 | W2 | 2026-04-11 | 8 |
| 6 | W2 | 2026-04-20 | (null) |
| 7 | (null) | 2026-03-03 | 4 |
| 8 | (null) | 2026-03-28 | 6 |
| 9 | W3 | 2026-04-05 | 12 |
SELECT 창고코드, EXTRACT(MONTH FROM 입고일) AS 월, COUNT(수량) AS 건수 FROM 입고내역 GROUP BY 창고코드, EXTRACT(MONTH FROM 입고일) HAVING COUNT(수량) >= 2 ORDER BY 1, 2;
1
3
2
1
3
4
4
2
해설
창고코드·월 조합으로 (W1,3)·(W1,4)·(W2,3)·(W2,4)·(NULL,3)·(W3,4) 의 6개 그룹이 생기고, COUNT(수량) 이 2 이상인 그룹은 (W1,3) 과 (NULL,3) 뿐이라 2행이다.
(W2,4) 는 행이 둘이지만 수량 NULL 은 세지 않아 건수 1 이고, 창고코드가 NULL 인 두 행은 하나의 그룹으로 묶인다.
- NULL 그룹을 버리면 1행으로 잘못 센다.
- COUNT(*) 처럼 NULL 행까지 세면 (W2,4) 가 들어가 3행이 된다.
- 건수 1 인 그룹은 HAVING 에서 모두 빠지므로 4행이 될 수 없다.
오류나 개정된 내용이 보이면 알려주세요