Contents
내가 작성한 쿼리
고객이 선호하는 배송 날짜가 주문 날짜와 같으면 주문을 즉시 처리하고,
그렇지 않으면 예약 처리라고 합니다.
고객의 첫 번째 주문은 고객이 가장 먼저 주문한 날짜가 있는 주문입니다.
고객이 정확히 한 번의 첫 번째 주문을 가지고 있다는 것이 보장됩니다.
모든 고객의 첫 번째 주문에서 소수점 2자리 반올림된 즉시 주문 비율을 구하는 솔루션을 작성하세요.
내가 작성한 쿼리
MySQL, Oracle
-- 고객별 첫 주문을 찾는 CTE
WITH FirstOrders AS (
SELECT *
FROM Delivery d
WHERE order_date = (
-- 동일 고객의 주문 중 가장 이른 주문 날짜만 선택
SELECT MIN(order_date)
FROM Delivery
WHERE customer_id = d.customer_id
)
)
SELECT
ROUND(
-- 즉시 주문(= 주문일과 선호 배송일이 같은 경우)인 건수 합계 × 100 나누기 전체 고객 수
SUM(CASE WHEN order_date = customer_pref_delivery_date THEN 1 ELSE 0 END)
* 100.0 / COUNT(*), 2
) AS immediate_percentage
FROM FirstOrders;
Share article