如何从订单 table 中找到两个订单与后续 Customer_Ids 的日期范围?

How to find the date range between two orders from the Order table with respect to subsequent Customer_Ids?

例如-假设我们有一个 customer_id =1,他在 2 年内下了 3 个订单,他的

1st Order_date = '2015 年 1 月 1 日'
2nd Order_date = '2015 年 6 月 5 日'
3rd Order_date = '2016 年 2 月 2 日'。

这必须从他下第一个订单之日起每年计算一次。

请告诉我如何在 HiveQL 中实现这种情况。

select ord_rnk_1.customer_id,ord_rnk_1.order_id 作为 1st_order, ord_rnk_2.order_id 作为 2nd_order, ord_rnk_1.order_date 作为 1st_order_date,ord_rnk_2.order_date 作为 2nd_order_date, 案件 WHEN nullif(ord_rnk_2.order_id,0)=0 THEN '第一次购买' 当 datediff(ord_rnk_2.order_date,ord_rnk_1.order_date) <=365 那么 'repeat purchase' ELSE '第一次购买' 以 customer_type 结尾 从 ( select customer_id,order_id, order_date 来自 (select customer_id,order_id, order_date,row_number() over(partition by customer_id order by order_date asc) rank从 (select 不同 customer_id, order_id, to_date(order_date,"dd/mm/yyyy") 作为 order_date 来自 table_t1 ) 美国广播公司 ) order_rank 其中 order_rank.rank=1 ) ord_rnk_1 左连接 ( select customer_id,order_id, order_date 来自 (select customer_id,order_id, order_date,row_number() over(partition by customer_id order by order_date asc) rank
从 (select 不同 customer_id, order_id, to_date(order_date,"dd/mm/yyyy") 作为 order_date 来自 table_t1 ) 美国广播公司 ) order_rank 其中 order_rank.rank=2 ) ord_rnk_2 在 ord_rnk_1.customer_id=ord_rnk_2.customer_id