gpt4 book ai didi

sql - 总结最近的行,按 id 分组

转载 作者:行者123 更新时间:2023-11-29 13:05:58 24 4
gpt4 key购买 nike

SELECT distinct on (prices.item_id) *
FROM prices
ORDER BY prices.item_id, prices.updated_at DESC

上面的查询检索了最近的价格,我如何得到所有当前价格的总和?

是否可以不使用子选择?

最佳答案

使用子查询很简单:

select sum(p.price)
from (select distinct on (p.item_id) p.*
from prices p
order by p.item_id, p.updated_at desc
) p

如果您不介意重复行,我认为以下方法可能有效:

select distinct on (p.item_id) sum(prices.price) over ()
from prices p
order by p.item_id, p.updated_at desc

您可以为此添加一个限制子句以获得您想要的。顺便说一下,我会这样写:

select sum(p.price)
from (select p.*,
row_number() over (partition by p.item_id order by updated_at desc) as seqnum
from prices p
order by p.item_id, p.updated_at desc
) p
where seqnum = 1

ROW_NUMBER() 是标准的 SQL。 DISTINCT ON 子句特定于 Postgres。

关于sql - 总结最近的行,按 id 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12411773/

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