查找两个最近订单之间的时差
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
我还给表起了别名,因为我不确定它是否会抱怨歧义,因为在主选择中提到了同一个表。
【讨论】:
以上是关于查找两个最近订单之间的时差的主要内容,如果未能解决你的问题,请参考以下文章