【问题标题】:How to do LAG & LEAD in Google BigQuery SQL?如何在 Google BigQuery SQL 中做 LAG & LEAD?
【发布时间】:2020-01-05 16:51:57
【问题描述】:

在 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

谢谢。任何对你有用的帮助。

【问题讨论】:

  • bigquery 中有 LAG() 和 LEAD() 函数。您如何确定 Churn_Status 列。

标签: sql google-bigquery lag lead


【解决方案1】:

如果我理解正确,你可以这样做:

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没有关注记录,则状态为“Churned”。
  • 如果上一条记录和下一条记录都存在,则状态为“重复”。

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多