如何在标准Bigquery中使用if-else语句?

BT10

如果我有如下表格:

|**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|

如果布尔列为true,或者布尔值为false,则我想选择具有不同名称的行,然后选择日期最早的行。因此,对于汽车条目,我想选择第一行,因为布尔值是true(所以我可以忽略所有其他条目),对于公共汽车条目,我想选择最后一行,因为它的两个布尔值都是false,所以我想要选择最早的日期(最接近当前日期)。

编辑:预期的输出

| 1 .-----------汽车----------- 2019-12-01 ----------真|
| 4 .-----------公共汽车----------- 2019-12-11 ---------- False |

米哈伊尔·伯利安(Mikhail Berlyant)

以下是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    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章