【问题标题】:SQL BigQuery Using Partition By on multiple columnsSQL BigQuery 在多列上使用分区依据
【发布时间】:2021-07-15 09:22:34
【问题描述】:

我有下表 交易表

USERID TRANSACTION_DATE Product
111 2021-05-03 A
112 2021-07-04 C
111 2021-08-21 A
113 2021-07-01 B
114 2021-07-09 A

我想得到一个摘要,以便我可以获得每个客户的每个产品的 MIN(TRANSACTION_DATE)(基本上是每个客户开始购买每个产品的第一个日期),如下所示。

注意:并非所有客户都购买了所有产品

期望的输出:

USERID Product FIRST_BOUGHT
111 A 2021-05-01
111 B 2021-03-01
111 D 2021-11-07
112 A 2021-05-09
112 C 2021-06-01

到目前为止,我已经在下面尝试过,但它没有给出预期的结果。任何帮助将不胜感激。

SELECT USERID, 
PRODUCT, 
MIN(TRANSACTION_DATE) OVER(PARTITION BY USERID,PRODUCT ORDER BY TRANSACTION_DATE) AS FIRST_BOUGHT, 
FIRST_VALUE(PRODUCT) OVER(PARTITION BY USERID,PRODUCT ORDER BY TRANSACTION_DATE) AS Product
FROM Table1

【问题讨论】:

    标签: sql google-bigquery partitioning


    【解决方案1】:

    试试这个:

    select userid, product, min(transaction_date) as first_bought
    FROM Table1
    GROUP BY userid, product
    

    【讨论】:

      猜你喜欢
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 2018-10-07
      • 2018-12-07
      • 2017-08-12
      相关资源
      最近更新 更多