-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathImmediateFoodDeliveryII.sql
22 lines (20 loc) · 1.42 KB
/
ImmediateFoodDeliveryII.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* https://leetcode.com/problems/immediate-food-delivery-ii/ */
Create table If Not Exists Delivery (delivery_id int, customer_id int, order_date date, customer_pref_delivery_date date)
Truncate table Delivery
insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('1', '1', '2019-08-01', '2019-08-02')
insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('2', '2', '2019-08-02', '2019-08-02')
insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('3', '1', '2019-08-11', '2019-08-12')
insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('4', '3', '2019-08-24', '2019-08-24')
insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('5', '3', '2019-08-21', '2019-08-22')
insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('6', '2', '2019-08-11', '2019-08-13')
insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('7', '4', '2019-08-09', '2019-08-09')
/* Solution */
SELECT
round(100.0 * sum(CASE WHEN d.order_date = d.delivery_date THEN 1 ELSE 0 END) / count(*), 2) AS immediate_percentage
FROM (
SELECT
min(order_date) AS order_date,
min(customer_pref_delivery_date) AS delivery_date
FROM Delivery
GROUP BY customer_id
) d