반응형
문제
2017년 1월 한 달 동안 발생한 주문의 배송 예측이 정확했는지 분석을 하려고 합니다. 고객의 구매 일자별로 배송 예정 시각 안에 고객에게 도착한 주문과, 배송 예정 시각이 지나서 고객에게 도착한 주문을 각각 집계하는 쿼리를 작성해주세요. 배송 완료 또는 배송 예정 시각 데이터가 없는 경우는 계산에서 제외합니다. 계산 결과는 구매 날짜를 기준으로 오름차순 정렬되어야 한다.
문제 요약
- 예정 배송 시각 안(예정 배송일>배송 도착일) 에 도착한 주문과 예정 배송 시각을 초과한 주문(예정 배송일<배송 도착일)
- 구매 날짜 기준으로 오름차순 정렬
- 2017년 1월 한달 치
풀이
SELECT STRFTIME('%Y-%m-%d', order_purchase_timestamp) AS purchase_date
, COUNT(CASE WHEN STRFTIME('%Y-%m-%d', order_delivered_customer_date)
<= STRFTIME('%Y-%m-%d', order_estimated_delivery_date) THEN order_id END) AS success
, COUNT(CASE WHEN STRFTIME('%Y-%m-%d', order_delivered_customer_date)
> STRFTIME('%Y-%m-%d', order_estimated_delivery_date) THEN order_id END) AS fail
FROM olist_orders_dataset
WHERE STRFTIME('%Y%m', order_purchase_timestamp) = '201701'
GROUP BY 1
ORDER BY 1 ASC;
배운 점
추출해야 할 칼럼 각각의 조건이 다른 경우 각 칼럼마다 CASE WHEN THEN END 함수를 활용하자
집계함수(CASE WHEN 조건 THEN 적용칼럼 END) AS '추출 칼럼 이름'
반응형