Я пытаюсь рассчитать показатель оттока по данным, в которых есть customer_id, group, date. Агрегация будет по идентификатору, группе и дате. Формула оттока: (customers in previous cohort - customers in last cohort)/customers in previous cohort
клиенты в предыдущей когорте относятся к когортам за последние 28 дней, клиенты в последней когорте ссылаются на когорты за последние 28 дней
Я не уверен, как их агрегировать по диапазон дат для расчета оттока.
Вот примерные данные, которые я скопировал из SQL Группировка по диапазону дат :
Date Group Customer_id
2014-03-01 A 1
2014-04-02 A 2
2014-04-03 A 3
2014-05-04 A 3
2014-05-05 A 6
2015-08-06 A 1
2015-08-07 A 2
2014-08-29 XXXX 2
2014-08-09 XXXX 3
2014-08-10 BB 4
2014-08-11 CCC 3
2015-08-12 CCC 2
2015-03-13 CCC 3
2014-04-14 CCC 5
2014-04-19 CCC 4
2014-08-16 CCC 5
2014-08-17 CCC 3
2014-08-18 XXXX 2
2015-01-10 XXXX 3
2015-01-20 XXXX 4
2014-08-21 XXXX 5
2014-08-22 XXXX 2
2014-01-23 XXXX 3
2014-08-24 XXXX 2
2014-02-25 XXXX 3
2014-08-26 XXXX 2
2014-06-27 XXXX 4
2014-08-28 XXXX 1
2014-08-29 XXXX 1
2015-08-30 XXXX 2
2015-09-31 XXXX 3
Цель - рассчитать отток каждые 28 дней в период с 2014 по 2015 год по формуле, приведенной выше. Итак, это будет агрегирование данных путем свертывания их на 28 дней и расчета оттока по формуле.
Вот что я пытался агрегировать данные по диапазону дат:
SELECT COUNT(distinct customer_id) AS count_ids, Group,
DATE_SUB(CAST(Date AS DATE), INTERVAL 56 DAY) AS Date_min,
DATE_SUB(CURRENT_DATE, INTERVAL 28 DAY) AS Date_max
FROM churn_agg
GROUP BY count_ids, Group, Date_min, Date_max
Надеюсь, кто-нибудь поможет мне с вычислением агрегации и оттока. Я хочу просто вычесть агрегированные count_ids, чтобы вычесть это из следующего агрегированного count_ids, который происходит через 28 дней. Так что это будет последовательное вычитание одного и того же значения столбца (count_ids). Я не уверен, нужно ли мне использовать скользящее окно или простое агрегирование, чтобы найти отток.