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

时间:2017-01-10 14:55:04

标签: mysql

我有两张桌子,比如说客户和repair_orders。

表上的问题相关列:

客户表

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

repair_orders表

  • 订单ID
  • customer_id(Bigint)外键(来自客户表的参考 ID
  • 关闭(日期)

我的问题是我想要" max closed(date)"和 "第二最大关闭(日期)"当我在特定时间段内选择客户时,对于来自客户表的每个id。

目前我能够获得id和最大关闭(日期)和相关的ID但是如果可能的话我想要所有三个" id,max closed(date)和second_max closed(date)&#34 ;在一个结果中。

用于获取id和最大值(日期)的查询是:

$(a).find('a').attr('name').localeCompare($(b).find('a').attr('name'));

1 个答案:

答案 0 :(得分:0)

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

但在closed

上没有索引时速度太慢了