ANSI SQL 표준을 정의 (제 6.5 장, 설정 기능 사양) 빈 결과 집합에 집계 함수에 대한 다음과 같은 동작 :
COUNT(...) = 0
AVG(...) = NULL
MIN(...) = NULL
MAX(...) = NULL
SUM(...) = NULL
빈 세트의 평균, 최소 및 최대 값이 정의되어 있지 않으므로 AVG, MIN 및 MAX에 NULL을 반환하는 것이 완벽합니다.
그러나 마지막 것은 나를 귀찮게합니다 : 수학적으로 빈 세트의 SUM은 잘 정의되어 있습니다 : 0
. 기본 사례가 모든 것을 일관성있게하기 때문에 추가 의 중립 요소 인 0을 사용합니다 .
SUM({}) = 0 = 0
SUM({5}) = 5 = 0 + 5
SUM({5, 3}) = 8 = 0 + 5 + 3
SUM({5, NULL}) = NULL = 0 + 5 + NULL
정의 SUM({})
와 같은 null
기본적은 "행이"다른과에 맞지 않는 특별한 경우를하지 않습니다 :
SUM({}) = NULL = NULL
SUM({5}) = 5 != NULL + 5 (= NULL)
SUM({5, 3}) = 8 != NULL + 5 + 3 (= NULL)
내가 놓친 선택 (SUM은 NULL)의 명백한 이점이 있습니까?