[SQL문제풀기] Immediate Food Delivery II

silver's avatar
Oct 28, 2025
[SQL문제풀기] Immediate Food Delivery II
Contents
문제MySQL

문제

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

MySQL

내가 작성한 정답

select round(sum(case when d..order_date = d.customer_pref_delivery_date then 1 else 0 end)*100.00/count(sd),2) immediate_percentage from Delivery d join (select customer_id, min(order_date) sd from Delivery group by customer_id) m on m.customer_id = d.customer_id and m.sd = d.order_date;
select round(sum(case when order_date = customer_pref_delivery_date then 1 else 0 end)*100.00/ (select count(distinct customer_id) from Delivery ),2) immediate_percentage from Delivery d where (customer_id,order_date) in (select customer_id, min(order_date) from Delivery group by customer_id) and customer_pref_delivery_date = order_date;
 
Share article

silver