【问题标题】:Retention Tracking保留跟踪
【发布时间】:2012-09-13 21:31:10
【问题描述】:

假设我有一个愤怒的小鸟游戏。

我想知道系统LTV中前几个月购买过神鹰武器的玩家中,每个月有多少玩家购买了神鹰武器

我有每个客户购买的所有物品的日期。

我实际上想要的是二维 矩阵将告诉我从中移动的玩家的百分比 LTV_month_X 到 LTV_month_Y 对于特定电流的 X

一个例子:

example_png (它没有让我把图片内联,所以请点击链接查看图片)

现在,我找到了一种让玩家数量移动的方法 实际上来自LTV_month_X to LTV_month_Y that LTV_month_Y 是他们当前的 使用 SQL 查询和 Excel 数据透视表在系统内活动的月份。

我试图找出的主要是如何获得可能进行这种转变的人的基数。

几个定义: LTV_month_X = DATEDIFF(MONTH, first_eagle_month, specific_eagle_month)+1

最好我希望有 ANSI-SQL 中的解决方案,如果没有,那么 MySQL 或 MSSQL,但根本不应使用 Oracle 函数

由于我正在寻找过渡两步计划的百分比也可以工作,所以首先找到潜在的,然后找到实际的,以衡量从 LTV_month_X 到 LTV_month_Y 的留存率。

最后一个问题:我需要能够向下钻取并找到从任何阶段 X 移动到任何其他阶段 Y (>X) 的客户的实际 ID。

【问题讨论】:

  • 这可能属于SuperUser
  • 这主要是算法问题,目前没有针对任何特定工具。

标签: mysql sql excel pivot ansi-sql


【解决方案1】:

这里对 LTV 一词的使用并不清楚。我假设您的意思是用户的生命周期。

如果我理解这个问题,您是在问,基于每个实体都有一个或多个事件的列表,我如何按最后一个事件的月份和前一个事件的月份对实体进行分组(例如计数)最后一个事件。

在 mysql 中,您可以使用变量来执行此操作。我不打算解释整个概念,但基本上,当您在 SELECT 语句中编写 @var:=column 时,该变量被分配该列的值,您可以使用它来比较连续列之间的值,例如 LEAST(IF(@var=column,@same:=@same+1,@same:=0),@var:=column)

使用 LEAST 是一种确保执行顺序的技巧。

【讨论】:

    【解决方案2】:

    你要找的二维是

    1. 实际购买月份
    2. 相对购买月份
    
    SELECT 
       player_id, 
       TRUNCATE(first_purchase,'MM') AS first_month , 
       TRUNCATE(current_purchase_date ,'MM') AS purchase_month, 
       months_between(current_purchase _date, first_purchase_date)+1 AS relative_month, 
       SUM(purchase_amount) AS total_purchase, 
       COUNT(DISTINCT player_id) AS player_count 
    FROM ... 

    现在您可以将购买月份转换为相对月份并进行汇总

    【讨论】:

    • 这几乎就是我们最终所做的
    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多