반응형
이번 달과 지난달에 속한 쿠폰 슬롯 개수를 구하는 SQL 쿼리에 대해 알아보겠습니다.
먼저 쿠폰 테이블 샘플 데이터셋을 만들어 보겠습니다.
CREATE TABLE coupon_table (
coupon_id INT,
start_date DATE,
end_date DATE
);
INSERT INTO coupon_table (coupon_id, start_date, end_date)
VALUES (1, '2023-01-01', '2023-01-31'),
(2, '2023-01-15', '2023-02-14'),
(3, '2023-02-01', '2023-02-28'),
(4, '2023-02-15', '2023-03-16'),
(5, '2023-03-01', '2023-03-31'),
(6, '2023-01-10', '2023-01-25'),
(7, '2023-02-05', '2023-02-20'),
(8, '2023-02-12', '2023-03-12'),
(9, '2023-01-20', '2023-02-19'),
(10, '2023-02-28', '2023-03-29');
- coupon_id: 쿠폰의 고유 식별자입니다.
- start_date: 쿠폰이 사용 가능한 시작 날짜를 나타냅니다.
- end_date: 쿠폰이 사용 가능한 마지막 날짜를 나타냅니다.
다음과 같은 쿼리를 사용하여 이번달과 지난달에 속한 쿠폰 슬롯 개수를 구합니다.
current_date은 2023-03-28입니다. 추후에 쿼리를 current_date 대신에 date('2023-03-28')로 작동시키면 됩니다.
SELECT
count(distinct case when start_date <= current_date - interval '1 day' and end_date >= date_trunc('month', current_date) then coupon_id end) as mtd_coupon_slot_cnt,
count(distinct case when start_date <= date_trunc('month', current_date) - interval '1 day' and end_date >= date_trunc('month', current_date) - interval '1 month' then coupon_id else 0 end) as m_1_coupon_slot_cnt
from
coupon_table;
첫 번째 줄에서는 이번달 쿠폰 슬롯 개수를 구하기 위한 조건을 정의합니다.
- start_date가 현재 날짜의 하루 전보다 작거나 같고, end_date가 현재 월의 시작일보다 크거나 같은 경우
두 번째 줄에서는 지난달 쿠폰 슬롯 개수를 구하기 위한 조건을 정의합니다.
- start_date가 지난달의 마지막 말일보다 작거나 같고, end_date가 지난달의 시작일 보다 크거나 같은 경우
실행 결과는 아래와 같습니다. 이번달에 4개, 지난달에 8개가 속해 있는 걸 확인할 수 있습니다.
이를 통해 이번달과 지난달에 속한 쿠폰 슬롯 개수를 간단하게 확인할 수 있습니다.
반응형
'Skills > SQL' 카테고리의 다른 글
[SQL] 다른 테이블의 데이터를 추가하는 방법 (0) | 2023.03.31 |
---|---|
SQL WHERE IN을 활용한 다중 컬럼 필터링 (0) | 2023.03.29 |
SQL 활용 쿠폰 프로모션 효과 분석: 전체 주문 대비 쿠폰 사용률 살펴보기 (0) | 2023.03.27 |
PostgreSQL에서 JSON 데이터 추출하기 (0) | 2023.03.26 |
[Presto SQL] 가격 범위 별 Item 개수 확인 (0) | 2023.03.25 |