2012-09-21 51 views
1

比方说,我有一个愤怒的小鸟游戏。保留追踪

我想知道有多少玩家每月购买的“雄鹰”的武器出的买入神鹰武器在他们的LTV前几个月在系统中的球员

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

我几乎想什么已经是一个二维矩阵 会告诉我什么球员从 LTV_month_X搬到LTV_month_Y为X < Y各自结合特定电流 月份的百分比是多少?

一个例子:

example_png (它没有让我把PIC在线,请按链接查看图)

现在,我已经找到一种方式来获得玩家人数 实际上从LTV_month_X to LTV_month_Y that LTV_month_Y起是他们当前的 月内的系统内使用SQL查询和Excel Pivot表的活动。

我试图找到的主要是如何获得那些可能可以做这种转变的人的基数。

一些定义: LTV_month_X = DATEDIFF(MONTH, first_eagle_month, specific_eagle_month)+1

最好,我想有解决方案ANSI-SQL,如果不是那么MySQL或 MSSQL但没有甲骨文的功能应该在所有使用。

由于我在寻找转换两步骤计划的百分比也可以起作用,请首先找到潜在的人员,然后找到实际的人员,以便衡量从LTV_month_X到LTV_month_Y的保留期限。

最后一个问题:我需要为它可以向下钻取,找到谁在任何阶段X移动到任何其他阶段Y(> X)的客户的实际标识。

+0

这可能属于[超级用户](http://superuser.com/) –

+0

这是m一个算法的问题,目前没有针对任何特定的工具。 – TR7

回答

0

两个维度您正在寻找的是

  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 ...

现在,您可以透视购买一个月的相对月,总

+0

这几乎是我们在最后做的 – TR7

1

此处使用术语LTV并不清楚。我假设你的意思是用户的一生。

如果我理解这个问题,您是根据每个实体有一个或多个事件的实体列表,根据最后一个事件的月份和一个月份对实体进行分组(如计数)在上次活动之前。

在mysql中,你可以使用一个变量来做到这一点。我不打算扩大整个概念,但基本上,当在SELECT语句中编写@var:= column时,那么该变量会被分配该列的值,您可以使用它来比较连续列之间的值,例如 至少(@ var = column,@ same:= @ same + 1,@ same:= 0),@ var:= column)

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