如何从订单表中找到两个订单之间的日期范围,以及后续客户标识?

gupuwyp2  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(294)

例如,假设我们有一个客户\u id=1,他在2年内下了3个订单,他的
第一订单日期='2015年1月1日'
第二订单日期='2015年6月5日'
第三订单日期='2016年2月2日'。
从他第一次下单之日起每年都要计算一次。
请告诉我如何在hiveql中实现这个场景。

70gysomp

70gysomp1#

选择ord\u rnk\u 1.customer\u id,ord\u rnk\u 1.order\u id作为第一个订单,ord\u rnk\u 2.order\u id作为第二个订单,ord\u rnk\u 1.order\u date作为第一个订单日期,ord\u rnk\u 2.order\u date作为第二个订单日期,case when nullif(order\u rnk\u 2.order\u id,0)=0,然后在datediff(order\u rnk\u 2.order\u date)时选择“第一次购买”,ord\u rnk\u 1.order\u date)<=365然后“重复购买”否则“第一次购买”结束为customer\u type from(选择customer\u id、order\u id、order\u date from(选择customer\u id、order\u id、order\u date、row\u number()over(按customer\u id分区按order\u date asc)rank from(选择不同的customer\u id、order\u id、to\u date(order\u date),“dd/mm/yyyy”)作为表1中的订单日期)order\u rank where order\u rank.rank=1)order\u rnk\u 1 left join(选择customer\u id、order\u id、order\u date from(选择customer\u id、order\u id、order\u date、row\u number()over(按customer\u id划分按订单日期asc)rank
from(选择不同的客户标识,订单标识,to date(订单日期,“dd/mm/yyyy”)作为表1中的订单日期))order\u rank where order\u rank.rank=2)order\u rnk\u 1上的order\u 2。customer\u id=order\u rnk\u 2.customer\u id

相关问题