欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > leetcode----mysql

leetcode----mysql

2025/5/24 7:00:44 来源:https://blog.csdn.net/qq_54815732/article/details/144905932  浏览:    关键词:leetcode----mysql

1174. 即时食物配送 II - 力扣(LeetCode)

配送表: Delivery

+-----------------------------+---------+
| Column Name                 | Type    |
+-----------------------------+---------+
| delivery_id                 | int     |
| customer_id                 | int     |
| order_date                  | date    |
| customer_pref_delivery_date | date    |
+-----------------------------+---------+
delivery_id 是该表中具有唯一值的列。
该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。

如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。

首次订单」是顾客最早创建的订单。我们保证一个顾客只会有一个「首次订单」。

编写解决方案以获取即时订单在所有用户的首次订单中的比例。保留两位小数。

结果示例如下所示:

示例 1:

输入:
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                  |
+-------------+-------------+------------+-----------------------------+
输出:
+----------------------+
| immediate_percentage |
+----------------------+
| 50.00                |
+----------------------+
解释:
1 号顾客的 1 号订单是首次订单,并且是计划订单。
2 号顾客的 2 号订单是首次订单,并且是即时订单。
3 号顾客的 5 号订单是首次订单,并且是计划订单。
4 号顾客的 7 号订单是首次订单,并且是即时订单。
因此,一半顾客的首次订单是即时的。

首先列个提纲

# Write your MySQL query statement below

select round (

    ,2

)

as immediate_percentage

from Delivery

首先需要求出所有用户的首次订单

# Write your MySQL query statement below

-- select round (

--     ,2

-- )

-- as immediate_percentage

-- from Delivery

select customer_id,min(order_date)

from Delivery

group by customer_id

 select

        customer_id,

        row_number() over(partition by customer_id order by order_date) rn,

        datediff(order_date,customer_pref_delivery_date) diff

    from

        Delivery

select round(sum(diff = 0)/count(*)* 100 ,2)  immediate_percentage

from

   ( select

        customer_id,

        row_number() over(partition by customer_id order by order_date) rn,

        datediff(order_date,customer_pref_delivery_date) diff

    from

        Delivery) t1

where rn = 1

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词