gpt4 book ai didi

sql - 获取 BigQuery 中最新行的属性?

转载 作者:行者123 更新时间:2023-12-04 14:41:43 26 4
gpt4 key购买 nike

我在 BigQuery 工作。我有一张 table t1其中有地址、邮政编码、价格和日期字段。我想按地址和邮政编码对其进行分组,找到每个地址的最新行的价格。

我怎样才能在 BigQuery 中做到这一点?我知道如何获取地址、邮政编码和最近的日期:

SELECT
ADDRESS, POSTCODE, MAX(DATE)
FROM
[mytable]
GROUP BY
ADDRESS,
POSTCODE

但我不知道如何获得与这些字段匹配的这些行的价格。这是我最好的猜测,它确实产生了结果 - 这是否正确?
SELECT 
t1.address, t1.postcode, t1.date, t2.price
FROM [mytable] t2
JOIN
(SELECT
ADDRESS, POSTCODE, MAX(DATE) AS date
FROM
[mytable]
GROUP BY
ADDRESS,
POSTCODE) t1
ON t1.address=t2.address
AND t1.postcode=t2.postcode
AND t1.date=t2.date

在我看来这应该可以工作,但有些 similar questions有更复杂的解决方案。

最佳答案

只需使用 row_number() :

SELECT t.*
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY ADDRESS, POSTCODE
ORDER BY DATE DESC
) as seqnum
FROM [mytable] t
) t
WHERE seqnum = 1;

这不是聚合查询。您想过滤行以获取最新值。

关于sql - 获取 BigQuery 中最新行的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43368239/

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