sql - 在 SQL 中找到三个连续值的最大总和?

标签 sql math azure-sql-database

假设我有下表,名为 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+1id+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/

相关文章:

mysql - SQL查询多个日期到一个日期

java - Fibonacci - 为什么这给我错误的计算?

sql - 将本地 SQL Server 数据库迁移到 Azure SQL 数据库

Azure SQL 数据库管理门户 - 默认列值

android 将圆分成N等份并知道每个分割点的坐标

Azure Sql 数据仓库 API

mysql - 将两个复杂的 SQL 查询合并为一个

SQL - 查找重复值并在字段中删除

mysql - SQL 获取一列值的计数并按另一列值进行分组

php - 将行中的所有数字相加