Ral*_*lph 7 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
Run Code Online (Sandbox Code Playgroud)
我想找到连续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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望结果是6018
,因为它是3个连续值的最大总和.我刚刚开始学习SQL,我唯一的其他语言是Java,而我能想到的就是使用for循环这是多么容易.有没有人知道如何开始编写这样的查询?SQL中是否存在类似的东西?
编辑:此外,是否可以扩展这样的东西?如果我有一个非常大的表并且我想找到一百个连续值的最大总和怎么办?
像这样的东西:
select rev1,rev2,rev3, rev1.revenue+rev2.revenue+rev3.revenue total_rev from
revenue rev1,
revenue rev2,
revenue rev3
where rev1.id1+1=rev2.id and rev2.id+1=rev3.id and total_rev=
(select max(rev1.revenue+rev2.revenue+rev3.revenue) from
revenue rev1,
revenue rev2,
revenue rev3
where rev1.id1+1=rev2.id and rev2.id+1=rev3.id)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
125 次 |
最近记录: |