У меня есть набор данных воронки продаж в SQLite, и каждая строка представляет собой движение по воронке. Поскольку существует довольно много способов, которыми потенциальный покупатель может пройти по воронке (и, возможно, даже go назад), я не планировал выравнивать / денормализовать таблицу. Как я могу рассчитать «количество клиентов в месяц до сегодняшнего дня»?
Результат с приведенными выше данными должен быть:
month | customers
Jan-2020 | 2 (cust_8, cust_9)
Feb-2020 | 1 (cust_8, cust_9)
Mar-2020 | 1 (cust_8) # cust_9 churned
Apr-2020 | 2 (cust_8, cust_14)
May-2020 | 2 (cust_8, cust_14)
Я действительно хотел бы понять, как создать столбец month
, поскольку я не могу полагаться на даты из status_change_date
, так как записи могут отсутствовать. Придется ли вручную создавать этот столбец? Я знаю, что могу генерировать даты вручную, используя:
WITH RECURSIVE cnt (
x
) AS (
SELECT 0
UNION ALL
SELECT x + 1
FROM cnt
LIMIT (
SELECT
ROUND(((julianday ('2020-05-01') - julianday ('2020-01-01')) / 30) + 1))
)
SELECT
date(julianday ('2020-01-01'), '+' || x || ' month') AS month
FROM cnt
, но интересно, есть ли лучший способ? Может быть, было бы проще создать таблицу моментальных снимков и генерировать текущее состояние каждого клиента для каждой даты?