진료비 테이블에 대해 다음 SQL 을 실행한 결과로 옳은 것은?진료비진… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 2회
진료비 테이블에 대해 다음 SQL 을 실행한 결과로 옳은 것은?진료비
| 진료번호 | 기본료 | 검사료 |
|---|---|---|
| 1 | 10000 | 5000 |
| 2 | 8000 | (null) |
| 3 | (null) | 3000 |
| 4 | 12000 | 2000 |
| 5 | 9000 | (null) |
SELECT SUM(기본료 + 검사료) AS A,
SUM(기본료) + SUM(검사료) AS B,
COUNT(검사료) AS C
FROM 진료비;1
| A | B | C |
|---|---|---|
| 49000 | 49000 | 3 |
2
| A | B | C |
|---|---|---|
| 29000 | 29000 | 3 |
3
| A | B | C |
|---|---|---|
| 29000 | 49000 | 5 |
4
| A | B | C |
|---|---|---|
| 29000 | 49000 | 3 |
해설
행 단위 덧셈은 한쪽이 NULL 이면 결과가 NULL이 되어 SUM 에서 빠지므로 A 는 두 값이 모두 있는 행의 합 15000+14000=29000이다.
B 는 열마다 NULL 을 제외하고 먼저 합한 39000+10000=49000이고, COUNT(열)은 NULL 이 아닌 3건만 센다.
- A 를 49000으로 본 것은 NULL 을 0처럼 더한 오해다.
- B 를 29000으로 본 것은 열별 집계가 NULL 을 먼저 제외한다는 점을 놓쳤다.
- C 를 5로 본 것은 COUNT(*)와 COUNT(열)을 혼동한 것이다.
오류나 개정된 내용이 보이면 알려주세요