SQL分区达到“ second_value”等

时间:2018-06-20 19:48:47

标签: sql hive hiveql window-functions over-clause

我正在计算客户保留率,并希望根据第一次,第二次,第三次和类似购买中的行为对客户进行细分。

例如:

using first_value(had_coupon) over (partition by customer_id order by order_date DESC) 

我可以在首次购买效果保留中使用优惠券进行细分。

我正在尝试为第二次和第三次购买做同样的事情。 使用CASE语句,我可以为没有两次,三次或更多次购买的客户提供另一个价值。

我一直在使用this site寻求帮助。

1 个答案:

答案 0 :(得分:0)

使用row_number()通过使用max()min()的聚合来标记第一,第二,第三等+分组,以按客户/等分组行:

select max(case when rn=1 then had_coupon end) first_order_had_coupon,
       max(case when rn=2 then had_coupon end) second_order_had_coupon, 
       -- and so on
       --other group columns
from  
(
select had_coupon,
       --other columns
      row_number() over (partition by customer_id order by order_date DESC) rn
  from table
)s
group by group columns