gpt4 book ai didi

sql - 对重复值求和时如何获得不同的总和?

转载 作者:行者123 更新时间:2023-11-29 12:05:52 26 4
gpt4 key购买 nike

我遇到的问题是 Postgres,因为使用具有非唯一值或“销售额”的 SUM 会导致非唯一的累积总和或“运行销售额”。

这里是查询:

SELECT *, 
SUM(Sales) OVER (ORDER BY sales DESC) as running_sales
FROM t;

Here is the output

基本上我希望这张表显示为:

4--Motherboards------- 22----3995--RAID Controllers----22----421

有人对我如何做到这一点有任何想法吗?

旁白:如果有人感兴趣,这就是我的following

最佳答案

通过添加 id 作为第二个 ORDER BY 项,使 OVER 子句中的顺序唯一:

SELECT *, 
SUM(Sales) OVER (ORDER BY sales DESC, id) as running_sales
FROM t
ORDER BY sales DESC, id;

按照您的方式,相同的销售额被视为同一个 FRAME 中的同行并立即求和。
tutorial you were following不适合这个特定的查询。

此外,您可能希望向查询本身添加一个 ORDER BY 以获得稳定的结果。这非常便宜,因为它与窗口函数的排序顺序一致。

它现在的实现方式,对于简单查询,您通常按照窗口函数的顺序从该查询中获取结果,因为这是成本最低的方式。但是 Postgres 不保证没有 ORDER BY 的行的顺序,任意顺序可以在没有警告的情况下更改。

关于sql - 对重复值求和时如何获得不同的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16906944/

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