【发布时间】:2019-05-21 18:31:10
【问题描述】:
我有一个名为“orders”的表,可以在其中找到“customer_id”和“order_date” 从 2019 年 1 月 4 日到 2019 年 1 月 25 日,我们修改了界面,希望看到对保留率的影响。 为了计算留存率,我想找出在 2019 年 1 月 4 日到 2019 年 1 月 25 日之间订购的所有客户,并找出他们在第一次订购后的 30 天内重新订购的客户数量。
我尝试使用窗口函数(亚马逊红移)创建查询以获取此数据,但我无法找到解决方案。
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) 函数,但我不知道该怎么做。 也许你有更好的解决方案来帮助我:)
谢谢你,祝你有美好的一天!
【问题讨论】:
标签: sql amazon-redshift