gpt4 book ai didi

google-bigquery - BigQuery : Get latest row in a table only if a field has a specific value

转载 作者:行者123 更新时间:2023-12-02 04:18:35 30 4
gpt4 key购买 nike

假设 BigQuery 中有一个包含以下数据的表:

ColA | ColB | ColC | ColD
x | y | 1 | 5
x | y | 0 | 6
k | z | 1 | 4

ColA、ColB 是字符串,ColC 是整数,ColD 时间戳。

仅当 ColC 等于 1 时,我才需要为 ColA 的每个唯一值获取最新行 (LAST(ColD))。也就是说,在上面表,查询结果应为:

ColA | ColB | ColC | ColD
k | z | 1 | 4

第 1 行和第 2 行不应包含在结果中,因为对于 ColA=x,表中的最后一个条目(第 2 行)具有 ColC=0

我尝试过使用聚合函数(例如 MAX、LAST)结合子查询进行各种查询,但无法达到所需的结果。

最佳答案

SQL 标准中分析函数的正确名称是FIRST_VALUEFIRST 是 BigQuery 中的聚合函数

因此,首先您获取按时间戳排序的每个 ColA 的最后一个 ColC

SELECT
ColA,
ColB,
ColC,
time,
FIRST_VALUE(ColC) OVER (PARTITION BY ColA ORDER BY time DESC) AS last_Col_C
FROM (
SELECT
'x' AS ColA,
'y' AS ColB,
1 AS ColC,
5 AS time),
(
SELECT
'x' AS ColA,
'y' AS ColB,
0 AS ColC,
6 AS time),
(
SELECT
'k' AS ColA,
'z' AS ColB,
1 AS ColC,
4 AS time)

然后您进一步选择您感兴趣的内容,最终查询如下所示:

SELECT
ColA,
ColB,
ColC,
time
FROM (
--the above query here--)
where last_Col_C=1

关于google-bigquery - BigQuery : Get latest row in a table only if a field has a specific value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31959488/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com