如果我有如下表格:
|**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 |
以下是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] 删除。
我来说两句