【问题标题】:SQL partition achieving "second_value" etcSQL分区实现“second_value”等
【发布时间】:2018-11-30 01:07:13
【问题描述】:

我正在计算客户保留率,并希望根据第一次、第二次、第三次等购买的行为来细分我的客户。

例如:

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

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

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

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

【问题讨论】:

  • 对于任何数据问题,您应该包括样本输入数据和预期结果。
  • 您能否进一步解释您想要实现的目标?一个小数据集、预期结果以及您迄今为止尝试过的内容将真正有帮助
  • 嘿。我想根据客户在购买过程中的优惠券使用行为对其进行细分。
  • 对不起,我是新来的:嘿。我想根据他们购买生活中的优惠券使用行为来细分我的客户。到目前为止,我使用 first_value 进行首次购买、领先和滞后函数进行跟踪。但是,我想要的分割结果在示例列 G 和 H 中:docs.google.com/spreadsheets/d/…

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


【解决方案1】:

使用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

【讨论】:

  • 嘿,您的案例陈述对所有在第一次、第二次等时间购买的客户都是真实的。此外,它应该是一个窗口函数,因为我想通过这个用户的优惠券行为来细分用户:第二个购买优惠券用户必须在他们的第四个购买行中有一个 True 列:“第二次购买中的优惠券”。
  • @oshrim 很难理解,请提供数据示例和期望的输出
  • 这个样本数据集是否有助于理解我想要的结果? docs.google.com/spreadsheets/d/…
  • @oshrim 请将其添加到问题中,也许有人会提供帮助。我仍然不明白第二次购买有什么问题。对于客户第一个是 01/11/2018,第二个是 18/02/2018(第二个日期 第一个。顺序不一样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
相关资源
最近更新 更多