먼저 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
반응형
'SQL & DB > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 계산 관련 함수(ABS, POWER , SQRT, POINT) (0) | 2021.01.07 |
---|---|
[PostgreSQL] 값 비교(CASE, SIGN, GREATEST, LEAST), 평균값 구하기 (0) | 2021.01.07 |
[PostgreSQL] 날짜 다루기(CURRENT_DATE, CURRENT_TIMESTAMP, CAST, EXTRACT) (0) | 2021.01.06 |
[PostgreSQL] 문자열 다루기(추출/ 분해 / 합치기) (substring, split_part, concat) (0) | 2021.01.06 |
[PostgreSQL] Create / Insert / Select (0) | 2021.01.06 |