微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于同类群组和时期的 SQL 保留

如何解决基于同类群组和时期的 SQL 保留

我已经看过所有相关的帖子,但没有一个能帮到我。

我有以下字段:

enter image description here

enter image description here

地点:

  • SOLD_AT 是每笔交易的日期
  • CUSTOMER_ID 是每个客户的唯一 ID
  • COHORT 是该行用户首次购买的日期(年-月)
  • ORDER_MONTH 是该行的购买日期(年-月)
  • PERIOD_NUMBER 是 COHORT 和 ORDER_MONTH 之间的月差
  • N_CUSTOMERS 是每个 COHORT 中每个 PERIOD_NUMBER 的客户数量

如果有用,我有获取这些字段的查询,但我认为包含它们只会增加噪音,因为每个变量的定义更有用。

我需要做但不能做的是添加一个额外的字段来保留每个群组的每个时段编号(不是通过添加每个群组的时段编号的数据透视表)。 具体来说,我需要每个周期数的保留为该周期的用户数除以上一周期的用户数,这样:

enter image description here

要在 Python 中执行此操作,我只需执行以下操作:

cohort_pivot = df_cohort.pivot_table(index = 'cohort',columns = 'period_number',values = 'n_customers')
cohort_size = cohort_pivot.iloc[:,0]
retention_matrix1 = cohort_pivot.divide(cohort_size,axis = 0)

然后我可以取消透视并取出每个群组的每个时期的保留,以创建具有此值的附加列。

我尝试的答案之一是因为它是我看到的最接近的答案,是在 this post 中选择的答案,但我无法知道从那以后我将拥有的 period_numbers 或历史月份数对于加载的任何公司,代码必须是动态的(例如,在 DBT 中,这是我正在使用的工具,您可以创建动态数据透视表而不是需要知道这些信息的静态数据透视表,但正如我所说的需要创建字段,而不是数据透视表)

欢迎提出任何想法,非常感谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。