hive - 如何从 Order 表中找到两个订单之间关于后续 Customer_Ids 的日期范围?
问题描述
例如,假设我们有一个 customer_id =1,他在 2 年内下了 3 个订单,他的
第 1 个订单日期 = '2015 年 1 月 1 日'
第 2 个订单日期 = '2015 年 6 月 5 日'
第 3 个订单日期 = '2016 年 2 月 2 日'。
这必须从他第一次下订单之日起每年计算一次。
请让我知道如何在 HiveQL 中实现此场景。
解决方案
选择 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, CASE WHEN nullif(ord_rnk_2.order_id,0)=0 THEN '第一次购买' WHEN datediff( .order_date,ord_rnk_1.order_date) <=365 THEN 'repeat purchase' ELSE '第一次购买' end as customer_type from ( select customer_id,order_id, order_date from (select customer_id,order_id, order_date,row_number() over(partition by customer_id order by order_date asc) 排名来自 (select distinct customer_id, order_id, to_date(order_date,"dd/mm/yyyy") as order_date from table_t1 ) abc ) order_rank where order_rank.rank=1 ) ord_rnk_1 left join ( select customer_id,order_id, order_date from (select customer_id,order_id, order_date,row_number() over(partition by customer_id order by order_date asc) rank
from (select distinct customer_id, order_id, to_date(order_date,"dd/mm/yyyy") as order_date from table_t1 ) abc ) order_rank where order_rank.rank=2 ) ord_rnk_2 on ord_rnk_1.customer_id=ord_rnk_2.customer_id
推荐阅读
- html - 如何在更改另一个下拉 jquery 中的任何值时显示具有某些值的新下拉列表
- java - 如何在春季更改属性源位置?
- winforms - .NET 5 WinForms 应用程序中保存的设置在哪里?
- javascript - 如何将工作表列表添加到 Google App Script?
- javascript - 访问函数内的 DOM 元素(chrome 扩展)
- python - 从 csv 文件制作子图
- spring-boot - Spring Security 无法从 JWT 中提取角色
- python - 如何将 cmd 嵌入到 pyqt5 应用程序
- swiftui - SwiftUI GroupBoxStyle 填充高度
- mysql - 将原始数据库查询重写为 laravel 8 中的查询构建器