LeetCode MySQL 1174. 即时食物配送 II
文章目录
- 1. 题目
- 2. 解题
1. 题目
配送表: Delivery
+-----------------------------+---------+
| Column Name | Type |
+-----------------------------+---------+
| delivery_id | int |
| customer_id | int |
| order_date | date |
| customer_pref_delivery_date | date |
+-----------------------------+---------+
delivery_id 是表的主键。
该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。
如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。
「首次订单」是顾客最早创建的订单。我们保证一个顾客只会有一个「首次订单」。
写一条 SQL 查询语句获取即时订单在所有用户的首次订单中的比例。保留两位小数。
查询结果如下所示:
Delivery 表:
+-------------+-------------+------------+-----------------------------+
| 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 |
+-------------+-------------+------------+-----------------------------+Result 表:
+----------------------+
| immediate_percentage |
+----------------------+
| 50.00 |
+----------------------+
1 号顾客的 1 号订单是首次订单,并且是计划订单。
2 号顾客的 2 号订单是首次订单,并且是即时订单。
3 号顾客的 5 号订单是首次订单,并且是计划订单。
4 号顾客的 7 号订单是首次订单,并且是即时订单。
因此,一半顾客的首次订单是即时的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/immediate-food-delivery-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 先找出每个顾客的最早下单时间
select customer_id, min(order_date) firstday
from Delivery
group by customer_id
默认例子的结果
{"headers": ["customer_id", "firstday"], "values":
[[1, "2019-08-01"],
[2, "2019-08-02"],
[3, "2019-08-21"],
[4, "2019-08-09"]]}
- 再从原表中选出来,最终答案
# Write your MySQL query statement below
select round(sum(d.order_date = d.customer_pref_delivery_date)/count(*)*100 ,2) immediate_percentage
from Delivery d
where (d.customer_id, d.order_date) in
(select customer_id, min(order_date) firstdayfrom Deliverygroup by customer_id
)
452 ms
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode MySQL 1174. 即时食物配送 II相关推荐
- 【每日SQL打卡】DAY 18丨即时食物配送 II【难度中等】
[未来的你,会感谢今天努力的你]每日两题,一难一易,每天进步一点点,可能会直接导致一场面试的成功,或工作的轻松搞定,从而升职加薪迎娶白富美,加油小伙伴!
- LeetCode MySQL 1587. 银行账户概要 II
文章目录 1. 题目 2. 解题 1. 题目 表: Users +--------------+---------+ | Column Name | Type | +--------------+-- ...
- LeetCode MySQL 1132. 报告的记录 II
文章目录 1. 题目 2. 解题 1. 题目 动作表: Actions +---------------+---------+ | Column Name | Type | +------------ ...
- 【每日SQL打卡】DAY 18丨即时食物配送 I【难度简单】
[未来的你,会感谢今天努力的你]每日两题,一难一易,每天进步一点点,可能会直接导致一场面试的成功,或工作的轻松搞定,从而升职加薪迎娶白富美,加油小伙伴!
- LeetCode MySQL解题目录
已完成的 LeetCode MySQL 数据库题目.点击查看我的 LeetCode 算法解题目录. 已解决 123/123 - 简单 54 中等 51 困难 18 前置入门学习 MySQL 基本查询. ...
- LeetCode MySQL 1308. 不同性别每日分数总计(累加/变量/窗口函数)
文章目录 1. 题目 2. 解题 1. 题目 表: Scores +---------------+---------+ | Column Name | Type | +--------------- ...
- 【LeetCode】剑指 Offer 59 - II. 队列的最大值
[LeetCode]剑指 Offer 59 - II. 队列的最大值 文章目录 [LeetCode]剑指 Offer 59 - II. 队列的最大值 package offer;import java ...
- 【LeetCode】剑指 Offer 58 - II. 左旋转字符串
[LeetCode]剑指 Offer 58 - II. 左旋转字符串 文章目录 [LeetCode]剑指 Offer 58 - II. 左旋转字符串 一.字符串切片 二.列表遍历拼接 三.字符串遍历拼 ...
- 【LeetCode】剑指 Offer 32 - II. 从上到下打印二叉树 II
[LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 文章目录 [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 一.层序遍历 BFS 一. ...
最新文章
- python如何实现多进程_Python实现多进程的四种方式
- 建博客的原因。。。。
- 数据中心成“香饽饽”:阿里云未来再投2000亿,板块内掀起涨停潮
- web前端超出两行用省略号表示
- 1270: [BeijingWc2008]雷涛的小猫
- 利用TF-IDF提取新闻文章摘要
- HDU1071_数学几何
- win10java配置环境变量msi_Windows10+eclipse+hadoop2.7.1环境配置+wordcount-折腾笔记
- 使用GDAL生产jpg格式的快视图(拇指图)
- R语言ETL工程:分组(group_by)
- 怎样取消计算机中镜像,win7系统,如何删除之前创建的镜像文件。 (不是在系统保护里头删除还原点,我试过了)...
- Redis 官方推出可视化工具,颜值爆表,功能真心强大!这是不给其他工具活路啊!...
- 传谷歌金山秘密合作研发Office软件
- php集成paypal付款流程,PHP整合PayPal支付_PHP教程
- 如何快速设计一款万能遥控器产品原型(SoC免开发)
- OJ 里面的 G++ 和C++ 到底有什么区别, 为什么有时候G++能过,C++不能过,而有时候C++能过,G++不能过?
- 关于Palantir—第四部分:Palantir应用程序
- 神级编辑器 Vim 使用-插件篇
- jarvis oj level5
- 以太坊钱包开发-下载、编译 go-ethereum,搭建 eth 私有链