문제
다음 SQL의 결과로 가장 적절한 것은?
<데이터>
| COL_B | COL_C | SCORE |
|---|---|---|
| NULL | 10 | 5 |
| 15 | 50 | 10 |
| NULL | NULL | NULL |
SQLSELECT NVL(MIN(COL_B), 0) AS A, NVL(MAX(COL_C), 0) AS B, SUM(NVL(SCORE, 0)) AS C FROM T;
① 0, 50, 15 ② 15, 50, 15 ③ 15, 10, 15 ④ 0, 0, 0
정답
2번
해설
정답: 2. MIN(COL_B)는 NULL을 제외하고 15, MAX(COL_C)는 50, SUM(NVL(SCORE,0))는 5+10+0=15이다.
오답 풀이
- 1번: MIN은 NULL을 제외하므로 0이 아니라 15이다.
- 2번: 각 집계 함수의 NULL 처리 결과가 맞다.
- 3번: MAX(COL_C)를 10으로 잘못 계산했다.
- 4번: 모든 값을 NULL 또는 0으로 처리한 잘못된 결과이다.
보충 개념 집계 함수 MIN, MAX는 NULL을 제외하고 계산한다. NVL을 집계 함수 안에 쓰는지 밖에 쓰는지에 따라 결과가 달라질 수 있다.