如何从订单 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
例如-假设我们有一个 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