오라클에서 VARCHAR 형으로 되어있는 컬럼에 숫자만 있는 경우 이걸 어떻게 계산할까 궁금해하다가 요 블로그를 보게 되었다.

(http://blog.daum.net/why_i_am/33)


그래서 나도 테스트 해봤다.


일단 AVG를 할때 AVG하는 대상이 null이 없을 때는 아래와 같다.



보면 평균이 5가 나온다.


만약 d를 null로 하면?



평균을 d를 뺀 a,b,c만 가지고 평균을 낸다.


이건 count 함수와도 연관이 있다. 다시 d를 0으로 세팅하면..



count 가 4개이고 sum은 a,b,c,d를 모두 더한 값이다.


만약 다시 d가 null이면?



count가 3이되고 sum할 때 d를 빼고 한다. 

참고로 만약 count(*)로 하면 4가 나온다. 



생각해보면 sum할 때 대상 컬럼을 꼭 nvl(num,0)으로 만든 다음 할 필요가 없다.


여기서 중요한 개념은 "0 != null" 이다.


0은.. 0이지만 null은 '아무것도 없다.'라는 개념이기 때문이다.


맨 위에 있는 블로그에 다 있는 말이지만.. 간단히 정리해봤다.

Posted by 서오석
,