Positive-Influence-Data

[SQL] 배송 예정일 예측 성공과 실패 본문

SQL

[SQL] 배송 예정일 예측 성공과 실패

DS쟁이 2022. 12. 15. 16:41

❗ 본 포스팅은 Solvesql의  연습문제를 활용합니다. 다양한 SQL 문제를 풀어보고 싶다면 Solvesql를 방문하세요.

 

이번문제는 배송 예정일 예측 성공과 실패이다. 문제를 살펴보자.

 

 

문제를 해석하면

  1. 2017년 1월 한달동안 구매 데이터를 추출한다.
  2. 배송예정 시점이 배송완료 시점보다 같거나 뒤에 있으면 success 아니면 fail

 

생각을 조금 해야하는 문제이다.

 

select purchase_date, sum(success) as success, sum(fail) as fail
from (select
  strftime('%Y-%m-%d',order_purchase_timestamp , 'localtime') as purchase_date ,
  case
    when order_delivered_customer_date <= order_estimated_delivery_date then 1
    else 0
  end  as success,
  case
    when order_delivered_customer_date > order_estimated_delivery_date then 1
    else 0
  end  as fail
from
  olist_orders_dataset
where
  order_purchase_timestamp >= '2017-01-01'
  and order_purchase_timestamp < '2017-02-01') as t1

group by purchase_date;

 

필자는 case문을 써서 success부분에 만족하면 1 fail부분에 만족하면 1을 부여하였다. 그 외에 것들은 0으로 부여해서 그렇게 데이터를 추출해보면 각 날짜마다 success, fail의 여부를 체크 할 수 있다.

 

그것들을 날짜별로 전부 합해주면 결과 데이터 예시처럼 출력된다.

group by로 각 날짜를 그룹지어주고 success와 fail을 다 더해주면 각 날짜별로 success와 fail의 갯수를 알 수 있다.

 

** 이렇게 안풀고 다르게 풀어도 문제가 풀린다. 필자가 어렵게 풀었을 가능성이 있으니 본인의 풀이와 교차검증해도 좋을 듯 하다.

Comments