计算Postgres中的先前订单日期和状态

时间:2014-10-14 20:19:23

标签: postgresql date nested vlookup

我有一个简单的订单表,我需要为每个订单计算一些统计数据。基本上我有一个带有字段的Postgres数据库: Order_ID(唯一),User_ID,Created_at(日期),城市,总计

我想编写一个将为每个Order_ID生成的查询:

1)用户在当前Order_ID之前的最新订单的Created_at日期(因此,如果客户在2014年9月20日订购了Order_ID = 200005b的订单,该用户的日期是什么&#39 ;最近的订单?)

2)另一个显示用户"状态"基于此日期,给出以下情况:    - 如果这是用户的第一个订单,则Status =" new&#34 ;;    - 如果最近的先前订单日期< =在给定/当前订单之前60天,则Status =" active&#34 ;;    - 如果最近的上一个订单日期>在给定/当前订单之前60天,状态="重新激活"

我认为有一种方法可以使用一些嵌套的SELECTS来编写这个查询,也许是一种自我加入,但我不太了解PostgreSQL以了解查询的顺序。我已经能够生成一个" Order_N"使用以下查询的字段,我可以用它来查找(Order_N)-1来查找日期,但是一旦尝试在嵌套中使用它,我就会陷入困境。

SELECT
  user_id,
  order_id,
  created_at,
  row_number() over (partition by user_id order by created_at ) as order_n
order by user_id, created_at;

有没有人有任何想法?

0 个答案:

没有答案