SQL架构 配送表: Delivery +-----------------------------+---------+ | Column Name | Type | +-----------------------------+---------+ | delivery_id | int | | customer_id | int | | order_date | date | | customer_pref_delivery_date | date | +-----------------------------+---------+ delivery_id 是表的主键。 该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。
时间: 2023-08-15 21:10:34 浏览: 294
请问以下 SQL 查询可以得到什么结果?
1. 查询每个顾客最近一次配送的订单日期和期望配送日期。
2. 查询在 2021 年 5 月份之后,所有已经配送的订单的 delivery_id 和 order_date。
答案如下:
1.
```
SELECT customer_id, MAX(order_date) AS last_order_date, customer_pref_delivery_date
FROM Delivery
GROUP BY customer_id, customer_pref_delivery_date;
```
该查询会对 Delivery 表进行分组,按照 customer_id 和 customer_pref_delivery_date 进行分组,并计算每个分组中 order_date 的最大值,即最近一次订单日期。同时也会把 customer_pref_delivery_date 作为每个分组的一个字段返回。最终结果将会是一个表格,包含每个顾客最近一次配送的订单日期和期望配送日期。
2.
```
SELECT delivery_id, order_date
FROM Delivery
WHERE order_date >= '2021-05-01' AND customer_pref_delivery_date <= order_date;
```
该查询会筛选出 order_date 大于等于 2021 年 5 月 1 日,并且 customer_pref_delivery_date 小于等于 order_date 的记录。这些记录都是已经配送的订单,因为它们的配送日期已经过去了,并且它们的订单日期在 2021 年 5 月份之后。最终结果将会是一个表格,包含 delivery_id 和 order_date 两个字段。
阅读全文