例如,假设我们有一个客户\u id=1,他在2年内下了3个订单,他的第一订单日期='2015年1月1日'第二订单日期='2015年6月5日'第三订单日期='2016年2月2日'。从他第一次下单之日起每年都要计算一次。请告诉我如何在hiveql中实现这个场景。
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)rankfrom(选择不同的客户标识,订单标识,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
1条答案
按热度按时间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