1

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

我想知道有多少玩家在系统的LTV中购买了前几个月购买了猛鹰武器的玩家每个月购买了“猛鹰”武器

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

我实际上想要的是一个二维矩阵,它将告诉我对于当前特定月份的 X<Y 的每种组合,从 LTV_month_X 移动到 LTV_month_Y 的玩家百分比是多少?

一个例子:

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。

4

2 回答 2

1

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

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

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

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

于 2012-09-23T11:19:19.913 回答
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 ...  

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

于 2012-10-03T14:16:34.710 回答