假设我有下表,名为 revenues
.
id | revenue
------------
1 | 345
2 | 5673
3 | 0
4 | 45
5 | 4134
6 | 35
7 | 533
8 | 856
9 | 636
10 | 35
我想找到连续 3 个值分组的最大总和。这就是我的意思:
ids 1 + 2 + 3 => 345 + 5673 + 0 = 6018
ids 2 + 3 + 4 => 5673 + 0 + 45 = 5718
ids 3 + 4 + 5 => 0 + 45 + 4134 = 4179
ids 4 + 5 + 6 => 45 + 4134 + 35 = 4214
ids 5 + 6 + 7 => 4134 + 35 + 533 = 4702
ids 6 + 7 + 8 => 35 + 533 + 856 = 1424
ids 7 + 8 + 9 => 533 + 856 + 636 = 2025
ids 8 + 9 + 10 => 856 + 636 + 35 = 1527
在这种情况下,我希望结果是
6018
,因为它是 3 个连续值的最大总和。我刚刚开始学习 SQL,我以前唯一的其他语言是 Java,我所能想到的就是用 for 循环来做这件事是多么容易。有没有人知道我如何开始编写这样的查询? SQL中是否存在类似的东西?编辑:此外,是否可以缩放这样的东西?如果我有一个非常大的表并且我想找到一百个连续值的最大总和怎么办?
最佳答案
一种方法是使用两个连接来访问 id+1
和 id+2
:
SELECT max(t1.revenue+t2.revenue+t3.revenue)
FROM revenues t1
JOIN revenues t2 ON t1.id+1 = t2.id
JOIN revenues t3 ON t1.id+2 = t3.id
Demo.
关于sql - 在 SQL 中找到三个连续值的最大总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819195/