我在 GBQ 中有這張表:
ClientID Type Month
XXX A 4
YYY C 4
FFX B 5
FFF B 6
XXX C 6
XXX A 6
YRE C 7
AAR A 7
FFF A 8
EGT B 8
FFF B 9
ETT C 9
我用這個基本查詢計算每個ClientID和Month的 Type 數量:
SELECT ClientID,
COUNT(DISTINCT Type) NbTypes,
Month
FROM Table
GROUP BY ClientID, Month
結果如下所示:
ClientID NbTypes Month
XXX 1 4
XXX 2 6
FFF 1 6
FFF 1 8
FFF 1 9
... ... ...
我需要做的是,計算每個 ClientID和每個 Month的 Type 數量:每過去 3 個月。
例如 :
- 對于
ClientID= XXX, andMonth= 8:我想要計算TypewhereMonth= 6 ANDMonth= 7 ANDMonth= 8
有沒有辦法做到這一點GROUP BY?
謝謝
uj5u.com熱心網友回復:
您可以在陳述句中使用 HAVING:
SELECT ClientID,
COUNT(DISTINCT Type) NbTypes,
Month
FROM Table
GROUP BY ClientID, Month
HAVING Month = EXTRACT(MONTH FROM CURRENT_DATE())
OR Month = EXTRACT(MONTH FROM DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 1 MONTH))
OR Month = EXTRACT(MONTH FROM DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 2 MONTH))
請注意,在您的表中似乎沒有確定年份的列,因此此陳述句會將所有值與當前月份的月份值分組為當前月份減去兩個月。因此,例如,將使用此查詢選擇 2021 年 12 月、11 月和 2021 年 10 月、2020 年、2019 年等的每個資料。
另請注意,我無法測驗此陳述句,因為我不使用 BigQuery。
這是日期函式的來源:https :
//cloud.google.com/bigquery/docs/reference/standard-sql/date_functions
uj5u.com熱心網友回復:
如果 Google Big Query 允許,您可以在 SELECT 中使用 SELECT
SELECT ClientID,
COUNT(DISTINCT Type) NbTypes,
Month,
MAX((select count(distinct Type)
from Table t2
where t1.ClientID=t2.ClientID
and t1.month-t2.month between 0 and 2
)
) as NbType_3_months
FROM Table t1
GROUP BY ClientID, Month
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397717.html
