在 BigQuery 中获取每天的最大数据
Get max data for every day in BigQuery
我有一个 table 按小时显示每日数据。我想得到一个每天只有一行的 table。该行应具有 AforoTotal 列的最大值。
这是table的一部分,包含三天的记录。
FechaHora
Fecha
Hora
AforoTotal
2022-01-13T16:00:00Z
2022-01-13
16:00:00
4532
2022-01-13T15:00:00Z
2022-01-13
15:00:00
4419
2022-01-13T14:00:00Z
2022-01-13
14:00:00
4181
2022-01-13T13:00:00Z
2022-01-13
13:00:00
3914
2022-01-13T12:00:00Z
2022-01-13
12:00:00
3694
2022-01-13T11:00:00Z
2022-01-13
11:00:00
3268
2022-01-13T10:00:00Z
2022-01-13
10:00:00
2869
2022-01-13T09:00:00Z
2022-01-13
09:00:00
2065
2022-01-13T08:00:00Z
2022-01-13
08:00:00
1308
2022-01-13T07:00:00Z
2022-01-13
07:00:00
730
2022-01-13T06:00:00Z
2022-01-13
06:00:00
251
2022-01-13T05:00:00Z
2022-01-13
05:00:00
95
2022-01-13T04:00:00Z
2022-01-13
04:00:00
44
2022-01-13T03:00:00Z
2022-01-13
03:00:00
35
2022-01-13T02:00:00Z
2022-01-13
02:00:00
28
2022-01-13T01:00:00Z
2022-01-13
01:00:00
6
2022-01-13T00:00:00Z
2022-01-13
00:00:00
-18
2022-01-12T23:00:00Z
2022-01-12
23:00:00
1800
2022-01-12T22:00:00Z
2022-01-12
22:00:00
2042
2022-01-12T21:00:00Z
2022-01-12
21:00:00
2358
2022-01-12T20:00:00Z
2022-01-12
20:00:00
2827
2022-01-12T19:00:00Z
2022-01-12
19:00:00
3681
2022-01-12T18:00:00Z
2022-01-12
18:00:00
4306
2022-01-12T17:00:00Z
2022-01-12
17:00:00
4377
2022-01-12T16:00:00Z
2022-01-12
16:00:00
4428
2022-01-12T15:00:00Z
2022-01-12
15:00:00
4424
2022-01-12T14:00:00Z
2022-01-12
14:00:00
4010
2022-01-12T13:00:00Z
2022-01-12
13:00:00
3826
2022-01-12T12:00:00Z
2022-01-12
12:00:00
3582
2022-01-12T11:00:00Z
2022-01-12
11:00:00
3323
2022-01-12T10:00:00Z
2022-01-12
10:00:00
2805
2022-01-12T09:00:00Z
2022-01-12
09:00:00
2159
2022-01-12T08:00:00Z
2022-01-12
08:00:00
1378
2022-01-12T07:00:00Z
2022-01-12
07:00:00
790
2022-01-12T06:00:00Z
2022-01-12
06:00:00
317
2022-01-12T05:00:00Z
2022-01-12
05:00:00
160
2022-01-12T04:00:00Z
2022-01-12
04:00:00
106
2022-01-12T03:00:00Z
2022-01-12
03:00:00
95
2022-01-12T02:00:00Z
2022-01-12
02:00:00
86
2022-01-12T01:00:00Z
2022-01-12
01:00:00
39
2022-01-12T00:00:00Z
2022-01-12
00:00:00
0
2022-01-11T23:00:00Z
2022-01-11
23:00:00
2032
2022-01-11T22:00:00Z
2022-01-11
22:00:00
2109
2022-01-11T21:00:00Z
2022-01-11
21:00:00
2362
2022-01-11T20:00:00Z
2022-01-11
20:00:00
2866
2022-01-11T19:00:00Z
2022-01-11
19:00:00
3948
2022-01-11T18:00:00Z
2022-01-11
18:00:00
4532
2022-01-11T17:00:00Z
2022-01-11
17:00:00
4590
2022-01-11T16:00:00Z
2022-01-11
16:00:00
4821
2022-01-11T15:00:00Z
2022-01-11
15:00:00
4770
2022-01-11T14:00:00Z
2022-01-11
14:00:00
4405
2022-01-11T13:00:00Z
2022-01-11
13:00:00
4040
2022-01-11T12:00:00Z
2022-01-11
12:00:00
3847
2022-01-11T11:00:00Z
2022-01-11
11:00:00
3414
2022-01-11T10:00:00Z
2022-01-11
10:00:00
2940
2022-01-11T09:00:00Z
2022-01-11
09:00:00
2105
2022-01-11T08:00:00Z
2022-01-11
08:00:00
1353
2022-01-11T07:00:00Z
2022-01-11
07:00:00
739
2022-01-11T06:00:00Z
2022-01-11
06:00:00
248
2022-01-11T05:00:00Z
2022-01-11
05:00:00
91
2022-01-11T04:00:00Z
2022-01-11
04:00:00
63
2022-01-11T03:00:00Z
2022-01-11
03:00:00
46
2022-01-11T02:00:00Z
2022-01-11
02:00:00
42
2022-01-11T01:00:00Z
2022-01-11
01:00:00
18
2022-01-11T00:00:00Z
2022-01-11
00:00:00
5
我的预期结果是:
FechaHora
Fecha
Hora
AforoTotal
2022-01-13T16:00:00Z
2022-01-13
16:00:00
4532
2022-01-12T16:00:00Z
2022-01-12
16:00:00
4428
2022-01-11T17:00:00Z
2022-01-11
17:00:00
4590
考虑以下方法
select as value
array_agg(t order by AforoTotal desc limit 1)[offset(0)]
from your_table t
group by Fecha
如果应用于您问题中的示例数据 - 输出为
另一种方式有点贵:
当 (Fetcha 和 max(AforoTotal)) 组合是唯一的时,它将起作用。
在给定的示例中,我发现它是独一无二的。
SELECT * FROM your_table
WHERE Fecha||AforoTotal
IN
(SELECT Fecha||MAX( AforoTotal ) FROM your_table GROUP BY Fecha);
[Output]
https://i.stack.imgur.com/IFzWA.jpg
感谢您的方法。这可以在 BigQuery 中保存为视图,我可以在 DataStudio 中使用它。我还没有测试组合不唯一时会发生什么,我会看看它的表现。
我有一个 table 按小时显示每日数据。我想得到一个每天只有一行的 table。该行应具有 AforoTotal 列的最大值。
这是table的一部分,包含三天的记录。
FechaHora | Fecha | Hora | AforoTotal |
---|---|---|---|
2022-01-13T16:00:00Z | 2022-01-13 | 16:00:00 | 4532 |
2022-01-13T15:00:00Z | 2022-01-13 | 15:00:00 | 4419 |
2022-01-13T14:00:00Z | 2022-01-13 | 14:00:00 | 4181 |
2022-01-13T13:00:00Z | 2022-01-13 | 13:00:00 | 3914 |
2022-01-13T12:00:00Z | 2022-01-13 | 12:00:00 | 3694 |
2022-01-13T11:00:00Z | 2022-01-13 | 11:00:00 | 3268 |
2022-01-13T10:00:00Z | 2022-01-13 | 10:00:00 | 2869 |
2022-01-13T09:00:00Z | 2022-01-13 | 09:00:00 | 2065 |
2022-01-13T08:00:00Z | 2022-01-13 | 08:00:00 | 1308 |
2022-01-13T07:00:00Z | 2022-01-13 | 07:00:00 | 730 |
2022-01-13T06:00:00Z | 2022-01-13 | 06:00:00 | 251 |
2022-01-13T05:00:00Z | 2022-01-13 | 05:00:00 | 95 |
2022-01-13T04:00:00Z | 2022-01-13 | 04:00:00 | 44 |
2022-01-13T03:00:00Z | 2022-01-13 | 03:00:00 | 35 |
2022-01-13T02:00:00Z | 2022-01-13 | 02:00:00 | 28 |
2022-01-13T01:00:00Z | 2022-01-13 | 01:00:00 | 6 |
2022-01-13T00:00:00Z | 2022-01-13 | 00:00:00 | -18 |
2022-01-12T23:00:00Z | 2022-01-12 | 23:00:00 | 1800 |
2022-01-12T22:00:00Z | 2022-01-12 | 22:00:00 | 2042 |
2022-01-12T21:00:00Z | 2022-01-12 | 21:00:00 | 2358 |
2022-01-12T20:00:00Z | 2022-01-12 | 20:00:00 | 2827 |
2022-01-12T19:00:00Z | 2022-01-12 | 19:00:00 | 3681 |
2022-01-12T18:00:00Z | 2022-01-12 | 18:00:00 | 4306 |
2022-01-12T17:00:00Z | 2022-01-12 | 17:00:00 | 4377 |
2022-01-12T16:00:00Z | 2022-01-12 | 16:00:00 | 4428 |
2022-01-12T15:00:00Z | 2022-01-12 | 15:00:00 | 4424 |
2022-01-12T14:00:00Z | 2022-01-12 | 14:00:00 | 4010 |
2022-01-12T13:00:00Z | 2022-01-12 | 13:00:00 | 3826 |
2022-01-12T12:00:00Z | 2022-01-12 | 12:00:00 | 3582 |
2022-01-12T11:00:00Z | 2022-01-12 | 11:00:00 | 3323 |
2022-01-12T10:00:00Z | 2022-01-12 | 10:00:00 | 2805 |
2022-01-12T09:00:00Z | 2022-01-12 | 09:00:00 | 2159 |
2022-01-12T08:00:00Z | 2022-01-12 | 08:00:00 | 1378 |
2022-01-12T07:00:00Z | 2022-01-12 | 07:00:00 | 790 |
2022-01-12T06:00:00Z | 2022-01-12 | 06:00:00 | 317 |
2022-01-12T05:00:00Z | 2022-01-12 | 05:00:00 | 160 |
2022-01-12T04:00:00Z | 2022-01-12 | 04:00:00 | 106 |
2022-01-12T03:00:00Z | 2022-01-12 | 03:00:00 | 95 |
2022-01-12T02:00:00Z | 2022-01-12 | 02:00:00 | 86 |
2022-01-12T01:00:00Z | 2022-01-12 | 01:00:00 | 39 |
2022-01-12T00:00:00Z | 2022-01-12 | 00:00:00 | 0 |
2022-01-11T23:00:00Z | 2022-01-11 | 23:00:00 | 2032 |
2022-01-11T22:00:00Z | 2022-01-11 | 22:00:00 | 2109 |
2022-01-11T21:00:00Z | 2022-01-11 | 21:00:00 | 2362 |
2022-01-11T20:00:00Z | 2022-01-11 | 20:00:00 | 2866 |
2022-01-11T19:00:00Z | 2022-01-11 | 19:00:00 | 3948 |
2022-01-11T18:00:00Z | 2022-01-11 | 18:00:00 | 4532 |
2022-01-11T17:00:00Z | 2022-01-11 | 17:00:00 | 4590 |
2022-01-11T16:00:00Z | 2022-01-11 | 16:00:00 | 4821 |
2022-01-11T15:00:00Z | 2022-01-11 | 15:00:00 | 4770 |
2022-01-11T14:00:00Z | 2022-01-11 | 14:00:00 | 4405 |
2022-01-11T13:00:00Z | 2022-01-11 | 13:00:00 | 4040 |
2022-01-11T12:00:00Z | 2022-01-11 | 12:00:00 | 3847 |
2022-01-11T11:00:00Z | 2022-01-11 | 11:00:00 | 3414 |
2022-01-11T10:00:00Z | 2022-01-11 | 10:00:00 | 2940 |
2022-01-11T09:00:00Z | 2022-01-11 | 09:00:00 | 2105 |
2022-01-11T08:00:00Z | 2022-01-11 | 08:00:00 | 1353 |
2022-01-11T07:00:00Z | 2022-01-11 | 07:00:00 | 739 |
2022-01-11T06:00:00Z | 2022-01-11 | 06:00:00 | 248 |
2022-01-11T05:00:00Z | 2022-01-11 | 05:00:00 | 91 |
2022-01-11T04:00:00Z | 2022-01-11 | 04:00:00 | 63 |
2022-01-11T03:00:00Z | 2022-01-11 | 03:00:00 | 46 |
2022-01-11T02:00:00Z | 2022-01-11 | 02:00:00 | 42 |
2022-01-11T01:00:00Z | 2022-01-11 | 01:00:00 | 18 |
2022-01-11T00:00:00Z | 2022-01-11 | 00:00:00 | 5 |
我的预期结果是:
FechaHora | Fecha | Hora | AforoTotal |
---|---|---|---|
2022-01-13T16:00:00Z | 2022-01-13 | 16:00:00 | 4532 |
2022-01-12T16:00:00Z | 2022-01-12 | 16:00:00 | 4428 |
2022-01-11T17:00:00Z | 2022-01-11 | 17:00:00 | 4590 |
考虑以下方法
select as value
array_agg(t order by AforoTotal desc limit 1)[offset(0)]
from your_table t
group by Fecha
如果应用于您问题中的示例数据 - 输出为
另一种方式有点贵:
当 (Fetcha 和 max(AforoTotal)) 组合是唯一的时,它将起作用。
在给定的示例中,我发现它是独一无二的。
SELECT * FROM your_table
WHERE Fecha||AforoTotal
IN
(SELECT Fecha||MAX( AforoTotal ) FROM your_table GROUP BY Fecha);
[Output]
https://i.stack.imgur.com/IFzWA.jpg
感谢您的方法。这可以在 BigQuery 中保存为视图,我可以在 DataStudio 中使用它。我还没有测试组合不唯一时会发生什么,我会看看它的表现。