문제
다음 SQL의 실행 결과는?
SQLSELECT NVL(COUNT(*), 9999) FROM TABLE_NAME WHERE 1 = 2;
① NULL ② 1 ③ 9999 ④ 0
정답
4번
해설
정답: 4. COUNT(*)는 조건을 만족하는 행이 없으면 NULL이 아니라 0을 반환하므로 NVL이 적용되어도 0이다.
오답 풀이
- 1번: COUNT(*) 결과는 NULL이 아니다.
- 2번: 조건 1=2는 항상 거짓이므로 1건이 아니다.
- 3번: NVL은 첫 번째 인자가 NULL일 때만 9999를 반환한다.
- 4번: COUNT(*) 결과가 0이므로 정답이다.
보충 개념 COUNT는 집계 대상이 없어도 0을 반환한다. 반면 SUM, AVG 등은 대상 행이 없거나 모두 NULL이면 NULL을 반환할 수 있다.