配送表: Delivery+-----------------------------+---------+| Column Name | Type |+-----------------------------+---------+| delivery_id | int || customer_id | int || order_date | date || customer_pref_delivery_date | date |+-----------------------------+---------+delivery_id 是表的主键。该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。写一条 SQL查询语句获取即时订单所占的百分比,保留两位小数。查询结果如下所示。示例 1:输入:Delivery 表:+-------------+-------------+------------+-----------------------------+| delivery_id | customer_id | order_date | customer_pref_delivery_date |+-------------+-------------+------------+-----------------------------+| 1 | 1 | 2019-08-01 | 2019-08-02 || 2 | 5 | 2019-08-02 | 2019-08-02 || 3 | 1 | 2019-08-11 | 2019-08-11 || 4 | 3 | 2019-08-24 | 2019-08-26 || 5 | 4 | 2019-08-21 | 2019-08-22 || 6 | 2 | 2019-08-11 | 2019-08-13 |+-------------+-------------+------------+-----------------------------+输出:+----------------------+| immediate_percentage |+----------------------+| 33.33 |+----------------------+解释:2 和 3 号订单为即时订单,其他的为计划订单。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/immediate-food-delivery-i
#测试数据Create table If Not Exists Delivery (delivery_id int, customer_id int, order_date date, customer_pref_delivery_date date);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', '5', '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-11');insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('4', '3', '2019-08-24', '2019-08-26');insert into Delivery (delivery_id, customer_id, order_date, customer_pref_delivery_date) values ('5', '4', '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');
selectcase when count(1)>0 then round(count(case when order_date = customer_pref_delivery_date then 1 else null end)*100/count(1),2) else 0.00 end immediate_percentagefrom Delivery;

笔试题合集免费领取方法
方法一:关注公众号【跟强哥学SQL】,回复关键字【力扣】获取链接。
方法二:访问【SQL网】:https://sql.wang/sql-leetcode/sql-exercise
文章转载自跟强哥学SQL,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




