保留跟踪

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

我想知道有多less玩家每月都会在系统中的LTV中购买强大的老鹰武器,

我有每个客户购买的所有项目的date。

我实际上想要的是一个二维matrix,它会告诉我对于特定当月的X <Y的每个组合,从LTV_month_X移到LTV_month_Y的玩家的百分比是多less?

一个例子:

example_png (它不让我把图片内联,所以请按链接看到图片)

现在,我已经find了一种方法,可以将实际从LTV_month_X to LTV_month_Y that LTV_month_Y移动LTV_month_X to LTV_month_Y that LTV_month_Y的玩家数量LTV_month_X to LTV_month_Y that LTV_month_Y是系统内当前使用SQL查询和Excel数据透视表的月份的活动数量。

我试图find的主要是如何获得那些可能做这个转变的人的基数。

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

最好我想在ANSI-SQL的解决scheme,如果不是那么MySQL或MSSQL,但不应该使用任何Oraclefunction

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

最后一个问题:我需要它能够深入查找从任何阶段X移动到任何其他阶段Y(> X)的客户的实际ID。

你正在寻找的二维是

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

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

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

如果我理解了这个问题,那么您是根据每个实体有一个或多个事件的实体列表,根据最后一个事件的月份和最后一个事件的月份来分组(例如,计数)实体。

在MySQL中,你可以使用一个variables来做到这一点。 我不打算expalin整个概念,但基本上,当在一个SELECT语句中,你写@var:=列,那么该variables被赋予该列的值,你可以使用它来比较连续列之间的值,例如LEAST(IF(@ VAR =柱,@相同:= @相同+ 1,@相同:= 0),@ VAR:=列)

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