gpt4 book ai didi

mysql - 在 SQL 中获取特定时期内每个客户的日期差异

转载 作者:行者123 更新时间:2023-11-29 19:35:45 24 4
gpt4 key购买 nike

我有两个表,假设是客户和维修订单。

表格中与问题相关的列:

客户表:

  • id (Bigint) 主键,
  • last_seen(日期)

repair_orders 表:

  • 订单 ID
  • customer_id (Bigint) 外键(引用客户表中的id)
  • 关闭(日期)

我的问题是我想要“最大关闭(日期)”和当我在特定时间段选择客户时,客户表中每个 ID 的“第二大最大关闭时间(日期)”。

目前,我能够获取 id 和 max close(日期)以及相关 ID,但如果可能的话,我希望在一个结果中获得所有三个“id、max close(日期)和 secondary_max 关闭(日期)”。

我用来获取 id 和最大关闭时间(日期)的查询是:

SELECT c.id, max(r.closed)
FROM customers c
INNER JOIN repair_orders r
ON c.id = r.customer_id
WHERE c.last_seen >= '2017-01-01'
AND c.last_seen < '2017-02-01' group by c.id ;

最佳答案

select r.id, o1.id, o2.id
from (
select c.id,
max(r1.closed) as date1,
max(r2.closed) as date2
from customers c
join repair_orders r1 on c.id = r1.customer_id
join repair_orders r2 on c.id = r2.customer_id and r1.closed > r2.closed
group by 1
) r
join repair_orders o1 on r.id = o1.customer_id and r.date1 = r1.closed
join repair_orders o2 on r.id = o2.customer_id and r.date2 = r2.closed

但是没有索引就太慢了关闭

关于mysql - 在 SQL 中获取特定时期内每个客户的日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com