inblog logo
|
silver
    SQL문제풀기

    [SQL문제풀기] Immediate Food Delivery II

    silver's avatar
    silver
    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
    https://leetcode.com/problems/immediate-food-delivery-ii/description/?envType=study-plan-v2&envId=top-sql-50
    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

    RSS·Powered by Inblog