본문 바로가기

프로그래밍/ORACLE

[ORACLE] Null 속성 이해

1. Null 값의 연산은 언제나 Null이다

 - Null 값은 '공백이나 숫자 0' 과는 전혀 다른 의미

 - '아직 정의되지 않은 미지의 값' 또는 '현재 데이터를 입력하지 못하는 경우'를 의미

 

- 주문 데이터 -

주문번호 주문금액 주문취소금액
1 100,000 20,000
2 15,000  
SELECT 주문금액 - 주문취소금액 COL1
     , NVL(주문금액 - 주문취소금액, 0) COL2
     , NVL(주문금액, 0) - NVL(주문취소금액, 0) COL3
  FROM 주문

 

 

- SQL 수행 결과 -

COL1 COL2 COL3
80,000 80,000 80,000
  0 15,000

 

2. 집계함수는 Null 값을 제외하고 처리한다

(1) SUM

- 주문 데이터 -

주문번호 주문금액 주문취소금액
1 100,000  
2 15,000  
3 40,000  
4 45,000  
5 100,000  
SELECT SUM(주문금액) - SUM(주문취소금액) COL1
     , NVL(SUM(주문금액 - 주문취소금액), 0) COL2
     , NVL(SUM(주문금액), 0) - NVL(SUM(주문취소금액), 0) COL3
  FROM 주문

 

- SQL 수행 결과 -

COL1 COL2 COL3
  0 300,000

 

(2) AVG

- 주문 데이터 -

주문번호 주문금액 주문취소금액
1 100,000 20,000
2 15,000  
3 40,000 10,000
4 45,000 10,000
5 100,000 10,000
SELECT SUM(주문취소금액) / COUNT(*) COL1
     , AVG(주문취소금액) COL2
  FROM 주문

 

- SQL 수행 결과 -

COL1 COL2
10,000 12,500

 

- COL1 : 주문취소금액의 합계를 총건수로 나눔 -> 50,000 / 5 = 10,000

- COL2 : 집계함수는 Null값을 제외한다는 특성 -> 50,000 / 4 = 12,500

 

참고문헌 : SQL 전문가 가이드