오라클에서 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은 '아무것도 없다.'라는 개념이기 때문이다.
맨 위에 있는 블로그에 다 있는 말이지만.. 간단히 정리해봤다.
'DB 이야기 > OracleTip' 카테고리의 다른 글
oradiag_<linux login id> 로그가 생성될 때 막는 법 (0) | 2013.09.27 |
---|---|
count(1)과 count(*)의 차이점 (0) | 2013.08.21 |
Oracle session kill 하기 (0) | 2011.02.09 |
오라클에 돌고 있는 쿼리 시간 및 쿼리 확인하기 (0) | 2010.03.23 |
각 테이블 별로 용량이 어느정도 되는지 알아보는 쿼리 (0) | 2010.03.23 |