查找两个最近订单之间的时差

Posted

技术标签:

【中文标题】查找两个最近订单之间的时差【英文标题】:Find time difference between two most recent orders 【发布时间】:2019-08-25 13:02:47 【问题描述】:

我试图通过查找最近的订单和第二个最近的订单之间的时间差,然后将该差添加到最近的订单中来估计来自回头客的新订单的时间。

我一直在尝试限制和偏移,但这会返回每一行的总括日期。我在想我需要做一个横向连接,但不知道如何正确实现它。当我尝试这样做时,我没有收到任何输出。

select public.orders.customer_id,
       max(public.orders.created_at) as last_order_date,
       (select created_at from public.orders group by created_at order by created_at desc limit 1 offset 1) as second_last
from public.orders
inner join
(select
customer_id, count(*)
from public.orders
where status  = 'fulfilled'
group by public.orders.customer_id
having count(customer_id) >1) repeat_customers
on public.orders.customer_id = repeat_customers.customer_id
group by public.orders.customer_id;

我希望 second_last 字段由每个 customer_id 的第二个最近日期填充,但输出是整个表的第二个最近日期,导致每个条目的日期相同。

【问题讨论】:

【参考方案1】:

对于您的 second_last 列,您并没有限制每个客户,它确实会找到所有内容的最大值,就像您看到的结果一样。请参阅下面示例中的 WHERE 子句,它应该可以解决这个问题:

(SELECT
    created_at
FROM
    public.orders po
WHERE
    po.customer_id = customer_id
ORDER BY
    created_at
LIMIT 1 OFFSET 1) AS second_last

我还给表起了别名,因为我不确定它是否会抱怨歧义,因为在主选择中提到了同一个表。

【讨论】:

以上是关于查找两个最近订单之间的时差的主要内容,如果未能解决你的问题,请参考以下文章

从客户订单表中查找最近的重复订单 - 慢速交叉应用

如何选择在发送的订单中两个用户之间发送的所有邮件?

从 PHP 获取 Mongodb 中两个日期之间的订单详细信息

Mongo查询从订单列表中查找***商店

从订单表中查找新买家和回头客

两个列表之间的同步