SQL BigQuery 在多列上使用分区依据
SQL BigQuery Using Partition By on multiple columns
我有以下 table
交易 Table
用户名
TRANSACTION_DATE
产品
111
2021-05-03
一个
112
2021-07-04
C
111
2021-08-21
一个
113
2021-07-01
B
114
2021-07-09
一个
我想得到一个摘要,这样我就可以得到每个客户的每个产品的 MIN(TRANSACTION_DATE)(基本上是每个客户开始购买每个产品的第一个日期),如下所示。
注意:并非所有客户都购买了所有产品
期望的输出:
用户名
产品
FIRST_BOUGHT
111
一个
2021-05-01
111
B
2021-03-01
111
D
2021-11-07
112
一个
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
试试这个:
select userid, product, min(transaction_date) as first_bought
FROM Table1
GROUP BY userid, product
我有以下 table 交易 Table
用户名 | TRANSACTION_DATE | 产品 |
---|---|---|
111 | 2021-05-03 | 一个 |
112 | 2021-07-04 | C |
111 | 2021-08-21 | 一个 |
113 | 2021-07-01 | B |
114 | 2021-07-09 | 一个 |
我想得到一个摘要,这样我就可以得到每个客户的每个产品的 MIN(TRANSACTION_DATE)(基本上是每个客户开始购买每个产品的第一个日期),如下所示。
注意:并非所有客户都购买了所有产品
期望的输出:
用户名 | 产品 | FIRST_BOUGHT |
---|---|---|
111 | 一个 | 2021-05-01 |
111 | B | 2021-03-01 |
111 | D | 2021-11-07 |
112 | 一个 | 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
试试这个:
select userid, product, min(transaction_date) as first_bought
FROM Table1
GROUP BY userid, product