문제
다음 SQL에 대한 설명으로 적절한 것은?
SQLSELECT NVL(SUM(C1) + SUM(C2), 0) AS RESULT FROM TAB1;
① SUM 함수는 NULL 값을 0으로 변환한 뒤 집계한다. ② SUM 함수는 NULL 값을 제외하고 집계하며, 각 컬럼의 SUM 결과를 더한다. ③ NULL이 하나라도 있으면 SUM(C1)과 SUM(C2)는 항상 NULL이다. ④ NVL은 집계 전에 각 행의 NULL 값을 제거한다.
정답
2번
해설
정답: 2. SUM(expr)은 NULL을 제외하고 집계하며, 위 SQL은 SUM(C1)과 SUM(C2)를 각각 구한 후 더한다.
오답 풀이
- 1번: SUM이 NULL을 0으로 직접 변환하는 것은 아니다. NULL을 제외하고 집계한다.
- 2번: 올바른 설명이다.
- 3번: NULL이 있어도 NULL이 아닌 값이 있으면 합계를 구한다.
- 4번: NVL은 SUM(C1)+SUM(C2)의 결과가 NULL일 때 0으로 바꾼다.
보충 개념 집계 함수는 COUNT(*)를 제외하면 일반적으로 NULL을 제외하고 계산한다. 단, 모든 값이 NULL이면 SUM 결과는 NULL이 될 수 있다.