문제
급여가 2000 이상인 행만 합계에 포함하려고 한다. 조건에 맞지 않는 행은 NULL로 처리하여 SUM 집계에서 제외하는 표현으로 가장 적절한 것은?
① SUM(CASE WHEN SAL >= 2000 THEN SAL ELSE 0 END) ② SUM(CASE WHEN SAL >= 2000 THEN SAL ELSE NULL END) ③ COUNT(CASE WHEN SAL >= 2000 THEN SAL ELSE NULL END) ④ MAX(CASE WHEN SAL >= 2000 THEN NULL ELSE SAL END)
정답
2번
해설
정답: 2. 조건에 맞는 급여만 합산하고 조건에 맞지 않는 값은 NULL로 처리하면 SUM에서 제외된다.
오답 풀이
- 1번: ELSE 0은 합계 결과는 비슷할 수 있으나 NULL 제외 개념을 묻는 문제 의도와 다르다.
- 2번: 조건에 맞지 않는 행을 NULL로 처리해 집계에서 제외한다.
- 3번: 합계가 아니라 건수를 센다.
- 4번: 조건에 맞는 값을 NULL로 만들어 반대로 처리한다.
보충 개념 집계 함수는 일반적으로 NULL을 제외한다. 조건부 집계에는 CASE WHEN과 SUM, COUNT를 함께 자주 사용한다.