Предположим, у нас есть таблица ниже
Примечания:
Я хотел добавить числа для каждой строки, чтобы итоговая таблица выглядела так:
Чтобы объяснить, каждое событие обновления принадлежит предыдущему событию подписки. Мне нужен производный столбец, показывающий время для этого события подписки. Поэтому производный столбец должен совпадать со временем подписки на это событие. Моя конечная цель — узнать количество продлений/отмен и т. д. за заданное время подписки.
Надеюсь, я хорошо объяснил свой вопрос. Спасибо за ваши усилия и время.
Рассмотрим ниже подход, аналогичный предыдущему моему ответу.
SELECT *,
IF(event_name IN ('subscribe', 'renewal', 'churn'),
-- below will return most recent time of *subscribe* event
LAST_VALUE(IF(event_name = 'subscribe', event_time, NULL) IGNORE NULLS) OVER (PARTITION BY user ORDER BY event_time),
NULL
) AS subscription_time
FROM sample_table;
Результаты запроса