[SQL 문제 풀이] Immediate Food Delivery II (즉석 음식 배달 II)

Stupefyee's avatar
Jun 26, 2025
[SQL 문제 풀이] Immediate Food Delivery II (즉석 음식 배달 II)
Immediate Food Delivery II - LeetCode
Can you solve this real interview question? Immediate Food Delivery II - Table: Delivery +-----------------------------+---------+ | Column Name | Type | +-----------------------------+---------+ | delivery_id | int | | customer_id | int | | order_date | date | | customer_pref_delivery_date | date | +-----------------------------+---------+ delivery_id is the column of unique values of this table. The table holds information about food delivery to customers that make orders at some date and specify a preferred delivery date (on the same order date or after it).   If the customer's preferred delivery date is the same as the order date, then the order is called immediate; otherwise, it is called scheduled. The first order of a customer is the order with the earliest order date that the customer made. It is guaranteed that a customer has precisely one first order. Write a solution to find the percentage of immediate orders in the first orders of all customers, rounded to 2 decimal places. The result format is in the following example.   Example 1: Input: Delivery table: +-------------+-------------+------------+-----------------------------+ | delivery_id | customer_id | order_date | customer_pref_delivery_date | +-------------+-------------+------------+-----------------------------+ | 1 | 1 | 2019-08-01 | 2019-08-02 | | 2 | 2 | 2019-08-02 | 2019-08-02 | | 3 | 1 | 2019-08-11 | 2019-08-12 | | 4 | 3 | 2019-08-24 | 2019-08-24 | | 5 | 3 | 2019-08-21 | 2019-08-22 | | 6 | 2 | 2019-08-11 | 2019-08-13 | | 7 | 4 | 2019-08-09 | 2019-08-09 | +-------------+-------------+------------+-----------------------------+ Output: +----------------------+ | immediate_percentage | +----------------------+ | 50.00 | +----------------------+ Explanation: The customer id 1 has a first order with delivery id 1 and it is scheduled. The customer id 2 has a first order with delivery id 2 and it is immediate. The customer id 3 has a first order with delivery id 5 and it is scheduled. The customer id 4 has a first order with delivery id 7 and it is immediate. Hence, half the customers have immediate first orders.
Immediate Food Delivery II - LeetCode
notion image
고객이 선호하는 배송 날짜가 주문 날짜와 같으면 주문을 즉시 처리하고, 그렇지 않으면 예약 처리라고 합니다. 고객의 첫 번째 주문은 고객이 가장 먼저 주문한 날짜가 있는 주문입니다. 고객이 정확히 한 번의 첫 번째 주문을 가지고 있다는 것이 보장됩니다. 모든 고객의 첫 번째 주문에서 소수점 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

stupefyee