[英]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.