繁体   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