簡體   English   中英

如何在標准 Bigquery 中使用 if-else 語句?

[英]How to use if-else statement in Standard Bigquery?

如果我有一張像下面這樣的表:

|**Entry**-------**Name**--------**Date**------------------**Boolean**|    
|  1.-----------Car-----------2019-12-01----------True|  
|  2.-----------Car-----------2019-12-03----------False|  
|  3.-----------Bus-----------2019-12-05----------False|  
|  4.-----------Bus-----------2019-12-11----------False|

如果布爾列為真,或者布爾值為假,我想選擇具有不同名稱的行,然后選擇日期最早的行。 所以對於汽車條目,我想選擇第一行,因為它的布爾值為真(所以我可以忽略所有其他條目),對於總線條目,我想選擇最后一行,因為它的兩個布爾值都是假的,所以我想要選擇最早的日期(最接近當前日期)。

編輯:預期輸出

| 1.-----------汽車-----------2019-12-01-----------真|
| 4.-----------公交車-----------2019-12-11---------假|

下面是 BigQuery 標准 SQL

#standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY bool DESC, dt DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY name

筆記; 這是基於您的評論中的“只有一排汽車和真實”......

如果適用於您問題中的示例數據,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Car' name, '2019-12-01' dt, TRUE bool UNION ALL
  SELECT 'Car', '2019-12-03', FALSE UNION ALL
  SELECT 'Bus', '2019-12-05', FALSE UNION ALL
  SELECT 'Bus', '2019-12-11', FALSE 
)
SELECT AS VALUE ARRAY_AGG(t ORDER BY bool DESC, dt DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY name   

結果是

Row name    dt          bool     
1   Car     2019-12-01  true     
2   Bus     2019-12-11  false    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM