У меня есть таблица под названием «orders», где я могу найти «customer_id» и «order_date»
С 01/04/2019 по 25/01/2019 мы изменили наш интерфейс, и мы хотим видеть влияние на уровень удержания.
Чтобы рассчитать коэффициент удержания, я хочу найти всех клиентов, которые заказывали в период с 01/04/2019 по 25/01/2019, и выяснить, сколько из них было заказано в течение 30 дней после их первого заказа.
Я пытался создать запрос для получения этих данных с помощью оконной функции (amazon redshift), но мне не удалось найти решение.
SELECT customer_id, FIRST_VALUE(order_date IGNORE NULLS)
over (partition by customer_id order by order_date asc rows between unbounded preceding and unbounded following) AS first_order,
NTH_VALUE(order_date, 2)
over(partition by customer_id order by order_date desc
rows between unbounded preceding and unbounded following) AS second_order
FROM il_country_sg.v_fct_orders
WHERE order_date between '20190104' AND '20190226'
GROUP BY customer_id, order_date
Вот что я пытался сделать.
Моя проблема в том, что я получаю две последние даты, когда использую функции FIRST_VALUE и NTH_VALUE (2).
Мне нужно использовать функции LAST_VALUE и NTH_VALUE (n-1), но я не знаю, как это сделать.
Может быть, у вас есть лучшее решение, чтобы помочь мне:)
Спасибо и хорошего дня!