保留跟踪
比方说,我有一个愤怒的小鸟游戏。
我想知道有多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。
你正在寻找的二维是
- 实际购买月份
- 相对购买月份
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是确保执行顺序的一个技巧。