SQL & DB/PostgreSQL

[PostgreSQL] NULL값 처리 (COALESCE, NULLIF)

YSY^ 2021. 1. 7. 15:41

먼저 Dataset 코드입니다.

DROP TABLE IF EXISTS purchase_log_with_coupon;
CREATE TABLE purchase_log_with_coupon (
    purchase_id varchar(255)
  , amount      integer
  , coupon      integer
);

INSERT INTO purchase_log_with_coupon
VALUES
    ('10001', 3280, NULL)
  , ('10002', 4650, 500)
  , ('10003', 3870, NULL)
  , ('10004', 2670, 400)
  , ('10005', 3219, NULL)
  , ('10006', 9853, 200)
;

 

결손값 처리(COALESCE)

결손값(null)값 처리에 쓰는 함수는 COALESCE가 있습니다. 대상이 null이 아니라면 그대로 출력하고 그렇지 않으면 ex2,..를 출력합니다.

COALESCE(대상, ex1, ex2...)

Amount에서 쿠폰가격을 뺀 가격을 구해보겠습니다. 쿠폰의 null값을 0으로 치환한다음에 계산합니다.

select
	purchase_id
	,amount
	,coupon
	,amount - coupon as discount_amount1
	,amount- coalesce(coupon, 0 ) as discount_amount2 
from 
	purchase_log_with_coupon

 

cf) NULLIF(ex1, ex2)

ex1과 ex2가 같으면 NULL값출력하고 그렇지 않으면 ex1값을 출력한다.

select purchase_id 
	,amount 
	,coupon 
	,amount- coalesce(coupon, 0 ) as discount_amount
	,nullif(amount, amount- coalesce(coupon, 0 ))
from purchase_log_with_coupon;

 

 

 

 

 

728x90
반응형