在Google Big Query SQL中是否有执行LEAD和LAG的功能或方法来预测新客户,老客户和搅动的客户?
我的桌子
Order_ID | Date_Start | Date_End |
001 | 2020-1-1 | 2020-2-1 |
001 | 2020-2-1 | 2020-3-1 |
001 | 2020-3-1 | 2020-4-1 |
预期输出:
Order_ID | Date_Start | Date_End | Churn_Status
001 | 2020-1-1 | 2020-2-1 | New Customer
001 | 2020-2-1 | 2020-3-1 | Recurring
001 | 2020-3-1 | 2020-4-1 | Churned
谢谢。任何有用的帮助。
如果我理解正确,则可以执行:
select t.*,
(case when lag(order_id) over (partition by order_id order by date_start) is null
then 'New Customer'
when lead(order_id) over (partition by order_id order by date_start) is null
then 'Churned'
else 'Recurring'
end) as churn_status
from t;
我将逻辑解释为:
order_id
没有以前的记录,则状态为“新客户”。order_id
没有后续记录,则状态为“搅动”。