본문 바로가기
IT/SQL

PostgreSQL case when 활용, 신규주문 재주문 구분해주기 - 레드시프트

by marketinkerbell 2024. 1. 24.
반응형

 

 

PostgreSQL case when 활용, 신규주문 재주문 구분해주기 - 레드시프트

 

 

select *
, (case when o_rn = 1 then 1 else 0 end) as new_order   -- 해당날짜에 o_rn 이 1이면 1 반환
, (case when o_rn = 1 then 0 else 1 end) as re_order    -- 해당날짜에 o_rn 이 1이 아니면 1 반환

from (서브쿼리 테이블)

 

 

 

select *
, (case when o_rn = 1 then 1 else 0 end) as new_order   -- 해당날짜에 o_rn 이 1이면 1 반환
, (case when o_rn = 1 then 0 else 1 end) as re_order    -- 해당날짜에 o_rn 이 1이 아니면 1 반환

from
(select 
  mb_id
, od_id
, od_receipt_time
, row_number() over (partition by mb_id order by od_receipt_time) as o_rn
, od_tag
from "dev"."order")s1

group by s1.mb_id, s1.od_id, s1.od_receipt_time, s1.o_rn, s1.od_tag

 

 

 

 

AWS Redshift query editor v2 예시 화면 

 

PostgreSQL case when 활용, 신규주문 재주문 구분해주기 - 레드시프트

 

 

 

new_order 컬럼엔 첫 주문이면 1 표기

re_order 컬럼엔 재주문 이면 1 표기 

되어 있는 것을 예시화면 테이블에서 볼 수 있다 

 

 

 

 

ROW_NUMBER() OVER 함수 사용법은 아래글에서 참고!

 

[SQL 함수] ROW_NUMBER() OVER (Partition by _ Order by _ )

그룹핑 한 후 순번을 매겨주는 함수 SELECT ROW_NUMBER( ) OVER ( PARTITION BY 그룹핑할 칼럼 ORDER BY 정렬할 칼럼 ) FROM 테이블명 ( ORDER BY 정렬할 칼럼 DESC or ASC or 생략하면 ASC가 디폴트값 ) 이 긴 함수가 한

marketinkerbell.com

 

댓글