建立同类群组分析-缺乏上个月的数据

时间:2019-04-10 13:56:38

标签: mysql metabase

我为长期价值建立了队列分析,它似乎正在起作用-数字弹出=)。但是,我不知道为什么某些行的最近一个月没有数字?

而且,这是我建立队列的最简单方法吗?很高兴收到改进建议。

select

  ltv.activation_month as 'Cohort Activation Month', COUNT(*) as 'Cohort Size',
  AVG(ltv.one_month_GP) as '1 Month GP',
  AVG(ltv.two_month_GP) as '2 Month GP',
  AVG(ltv.three_month_GP) as '3 Month GP',
  AVG(ltv.four_month_GP) as '4 Month GP',
  AVG(ltv.five_month_GP) as '5 Month GP',
  AVG(ltv.six_month_GP) as '6 Month GP',
  AVG(ltv.seven_month_GP) as '7 Month GP',
  AVG(ltv.eight_month_GP) as '8 Month GP',
  AVG(ltv.nine_month_GP) as '9 Month GP',
  AVG(ltv.ten_month_GP) as '10 Month GP',
  AVG(ltv.eleven_month_GP) as '11 Month GP',
  AVG(ltv.twelve_month_GP) as '12 Month GP'

FROM

  (select
    u.user_acc, LEFT(activation_date,7) as activation_month, u.activation_date,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 1 MONTH) and DATE_ADD(u.activation_date, INTERVAL 1 MONTH) <= {{date}} then p.GP else null end) as one_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 2 MONTH) and DATE_ADD(u.activation_date, INTERVAL 2 MONTH) <= {{date}}then p.GP else null end) as two_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 3 MONTH) and DATE_ADD(u.activation_date, INTERVAL 3 MONTH) <= {{date}} then p.GP else null end) as three_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 4 MONTH) and DATE_ADD(u.activation_date, INTERVAL 4 MONTH) <= {{date}} then p.GP else null end) as four_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 5 MONTH) and DATE_ADD(u.activation_date, INTERVAL 5 MONTH) <= {{date}} then p.GP else null end) as five_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 6 MONTH) and DATE_ADD(u.activation_date, INTERVAL 6 MONTH) <= {{date}} then p.GP else null end) as six_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 7 MONTH) and DATE_ADD(u.activation_date, INTERVAL 7 MONTH) <= {{date}} then p.GP else null end) as seven_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 8 MONTH) and DATE_ADD(u.activation_date, INTERVAL 8 MONTH) <= {{date}} then p.GP else null end) as eight_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 9 MONTH) and DATE_ADD(u.activation_date, INTERVAL 9 MONTH) <= {{date}} then p.GP else null end) as nine_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 10 MONTH) and DATE_ADD(u.activation_date, INTERVAL 10 MONTH) <= {{date}} then p.GP else null end) as ten_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 11 MONTH) and DATE_ADD(u.activation_date, INTERVAL 11 MONTH) <= {{date}} then p.GP else null end) as eleven_month_GP,
    SUM(case when p.success_date <= DATE_ADD(u.activation_date, INTERVAL 12 MONTH) and DATE_ADD(u.activation_date, INTERVAL 12 MONTH) <= {{date}} then p.GP else null end) as twelve_month_GP

FROM

   (select user_id as user_acc, min(created_at) as activation_date
     from payments
     where user_type = 1
     group by user_id) u

  left join payments p on u.user_acc = p.user_id
   where
    u.activation_date >= '2017-10-01'
    and p.status not like "%cancelled%"
   group by
    1) ltv
group by
  1

缺少上个月的数据,如果{{date}} = '2019-03-31'我没有得到March 2019的任何款项,那么只有同类群组计数。

0 个答案:

没有答案