반응형
츄르사려고 코딩하는집사입니다.
1. [solvesql] 배송 예정일 예측 성공과 실패 SQLite
2. 문제 출처
https://solvesql.com/problems/estimated-delivery-date/
3. 풀이
- 이 문제는 CASE WHEN TEHN 구문만 잘 사용하면 된다.
- 먼저, OLIST_ORDERS_DATASET 테이블에서 2017년 1월 데이터만 뽑아낸다.
- 그리고, ORDER_PURCHASE_TIMESTAMP 컬럼을 기준으로 년월일 기준으로 GROUP BY를 한다.
- 각 연월일 별로, ORDER_DELIVERED_CUSTOMER_DATE가 ORDER_ESTIMATED_DELIVERY_DATE(배송예정일) 보다 작은 경우(배송예정일보다 빨리 배송완료를 한 경우) 에 ORDER_ID의 갯수를 가져오고,
- 각 연월일 별로, ORDER_DELIVERED_CUSTOMER_DATE가 ORDER_ESTIMATED_DELIVERY_DATE(배송예정일) 보다 크거나 같은 경우(배송예정일보다 빨리 배송완료를 하지 못한 경우) 에 ORDER_ID의 갯수를 가져와서 각 SUCCESS, FAIL를 구분하면 된다.
- 마지막 정렬은 구매한 날짜를 기준으로 정렬하면 된다.
4. 소스 코드
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 STRFTIME('%Y%m%d', ORDER_PURCHASE_TIMESTAMP)
ORDER BY "purchase_date"
반응형
'알고리즘 > solvesql' 카테고리의 다른 글
[solvesql] 많이 주문한 테이블 찾기 SQLite (0) | 2022.10.21 |
---|---|
[solvesql] 레스토랑의 요일별 VIP SQLite (0) | 2022.10.21 |
[solvesql] 레스토랑의 요일별 매출 요약 SQLite (0) | 2022.10.21 |
[solvesql] 레스토랑의 요일별 매출 요약 SQLite (0) | 2022.10.21 |
[solvesql] 점검이 필요한 자전거 찾기 SQLite (0) | 2022.10.21 |
[solvesql] 멘토링 짝꿍 리스트 SQLite (0) | 2022.10.21 |
[solvesql] 쇼핑몰의 일일 매출액과 ARPPU SQLite (0) | 2022.10.21 |
[solvesql] 쇼핑몰의 일일 매출액 SQLite (0) | 2022.10.21 |
최근댓글