Mysql 保留跟踪
假设我有一个愤怒的小鸟游戏。 我想知道每个月有多少玩家在系统的LTV中购买了“雄鹰”武器 我有每个客户购买的所有物品的日期 实际上我想要的是一个二维的 矩阵,这将告诉我从Mysql 保留跟踪,mysql,sql,excel,pivot,ansi-sql,Mysql,Sql,Excel,Pivot,Ansi Sql,假设我有一个愤怒的小鸟游戏。 我想知道每个月有多少玩家在系统的LTV中购买了“雄鹰”武器 我有每个客户购买的所有物品的日期 实际上我想要的是一个二维的 矩阵,这将告诉我从 LTV_month_X到LTV_month_Y对于X的每个组合术语LTV的使用不清楚。我想你指的是用户的生命周期 如果我理解了这个问题,您是在问,根据一个实体列表,每个实体都有一个或多个事件,我如何按最后一个事件的月份和最后一个事件之前的月份对实体进行分组(例如计数) 在mysql中,您可以使用一个变量来实现这一点。我不打算解
LTV_month_X到LTV_month_Y对于X的每个组合术语LTV的使用不清楚。我想你指的是用户的生命周期 如果我理解了这个问题,您是在问,根据一个实体列表,每个实体都有一个或多个事件,我如何按最后一个事件的月份和最后一个事件之前的月份对实体进行分组(例如计数) 在mysql中,您可以使用一个变量来实现这一点。我不打算解释整个概念,但基本上,当您在SELECT语句中编写@var:=column时,该变量将被分配该列的值,您可以使用该值来比较连续列之间的值,例如。 最小值(如果(@var=column,@same:=@same+1,@same:=0),@var:=column)
使用LEAST是确保执行顺序的一个技巧。这里术语LTV的用法不清楚。我想你指的是用户的生命周期 如果我理解了这个问题,您是在问,根据一个实体列表,每个实体都有一个或多个事件,我如何按最后一个事件的月份和最后一个事件之前的月份对实体进行分组(例如计数) 在mysql中,您可以使用一个变量来实现这一点。我不打算解释整个概念,但基本上,当您在SELECT语句中编写@var:=column时,该变量将被分配该列的值,您可以使用该值来比较连续列之间的值,例如。 最小值(如果(@var=column,@same:=@same+1,@same:=0),@var:=column)
使用LEAST是确保执行顺序的一个技巧。您要寻找的两个维度是
现在,您可以将购买月份转换为相对月份,并聚合您要查找的两个维度
现在,您可以将购买月份转为相对月份,并聚合这可能属于这主要是算法问题,目前没有针对任何特定工具。这可能属于这主要是算法问题,目前没有针对任何特定的工具。这与我们最终所做的差不多
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 ...