This Leetcode problem Immediate Food Delivery II LeetCode Solution is done in SQL.
List of all LeetCode Solution
![Immediate Food Delivery II LeetCode Solution](https://i0.wp.com/totheinnovation.com/wp-content/uploads/2024/02/LeetCode-Problem-Solution.png?resize=200%2C200&ssl=1)
Immediate Food Delivery II LeetCode Solution
Table of Contents
Problem Statement
Column Name | Type |
delivery_id | int |
customer_id | int |
order_date | date |
customer_pref_delivery_date | date |
delivery_id is the primary key 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_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 |
Delivery table:
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 Solution MySQL
select
round(
sum(
if(
order_date = customer_pref_delivery_date,
1, 0
)
) / count(*) * 100,
2
) as immediate_percentage
from
Delivery
where
(customer_id, order_date) in (
select
customer_id,
min(order_date)
from
Delivery
group by
customer_id
)
Code language: SQL (Structured Query Language) (sql)