본문 바로가기

DBMS

null의 계산

 

쿼리를 사용할 때 데이터를 가지고 계산하는 경우가 있다.

이때 값에 null이 들어갈 때를 주의해야 한다.

 

ex 1) 0 + 1 + 2

ex 2) null + 1 + 2

 

ex 1에 해당하는 답은 당연히 3이다.

문제는 ex 2의 경우에서 발생한다.

해당 계산식의 값은 null이다.

이렇게 되어 버리면 정확한 답을 구할 수 없게 된다.

 

이를 해결하기 위해서는 정확한 null 처리가 필요하다.

나의 경우 기존 식은 이랬다.

 

NVL((SUM(SUM)/SUM(CNT)), 0)

 

만약 테이블에 존재하는 SUM이나 CNT 값 중에 하나라도 null이 있다면 값은 무조건 0이 나올 것이다.

 

그래서 이렇게 수정했다.

 

NVL((SUM(NVL(SUM, 0))/SUM(NVL(CNT, 0))), 0)

 

이렇게 쿼리를 수정하면 SUM이나 CNT 값에 null이 있더라도 0으로 치환되고 원하는 데이터를 얻을 수 있다. 

728x90