다음 SQL의 결과 행 수는?[처방상세]상세번호약품코드용법수량1A식후5… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 6회
다음 SQL의 결과 행 수는?[처방상세]
| 상세번호 | 약품코드 | 용법 | 수량 |
|---|---|---|---|
| 1 | A | 식후 | 5 |
| 2 | A | 식후 | 6 |
| 3 | A | 식전 | 4 |
| 4 | A | (null) | 10 |
| 5 | A | (null) | (null) |
| 6 | B | 식후 | 12 |
| 7 | B | (null) | (null) |
| 8 | B | (null) | (null) |
| 9 | C | 식전 | 3 |
| 10 | C | 식전 | 7 |
SELECT 약품코드, 용법, COUNT(*) AS 건수 FROM 처방상세 GROUP BY 약품코드, 용법 HAVING SUM(수량) >= 10 ORDER BY 약품코드, 용법;
1
4
2
3
3
5
4
6
해설
그룹은 (A,식후)·(A,식전)·(A,NULL)·(B,식후)·(B,NULL)·(C,식전) 6개이고, HAVING SUM(수량) >= 10 을 만족하는 그룹은 합계 11·10·12·10 인 4개다.
(A,NULL)은 NULL 수량을 빼고 10 이라 남지만, 수량이 모두 NULL 인 (B,NULL)은 SUM 이 NULL 이라 비교가 UNKNOWN 이 되어 빠지고 (A,식전)은 4 라 빠진다.
- 용법이 NULL 인 행도 하나의 그룹이 되므로 3이 아니다.
- (B,NULL)의 합계는 0 이 아니라 NULL 이라 5가 아니다.
- HAVING 으로 걸러지는 그룹이 있어 6이 아니다.
오류나 개정된 내용이 보이면 알려주세요