我必须下表:
|MY_VALUES|
|---------|
| 1 | 1' iteration
| 3 | 1' iteration | 2' iteration
| 2 | 1' iteration | 2' iteration | 3' iteration
| 5 | 1' iteration | 2' iteration | 3' iteration
| 3 | 1' iteration | 2' iteration | 3' iteration
| 2 | | 2' iteration | 3' iteration
| 4 | | 3' iteration
我需要一个输出如下的查询:
MY_RESULTS
----------
14
15
16
查询基本上是对第一个结果的前 5 行求和,然后它向前移动一个值,并对其他 5 行求和,依此类推...
有没有办法用 Oracle 做到这一点?我在文档中找不到进行此类工作的任何内容。
最佳答案
SQL 表表示无序 集。没有 5 个相邻行这样的东西,除非您有一列指定顺序。
然后您可以使用窗口函数执行此操作,假设您有这样一个列:
select t.*, sum(my_values) over (order by id rows between 4 preceding and current row) as sum5
from t;
这对所有行都适用。如果您想删除前 4 个(并且“id”并不容易),有多种方法:
select t.*
from (select t.*,
sum(my_values) over (order by id rows between 4 preceding and current row) as sum5,
row_number() over (order by id) as seqnum
from t
) t
where seqnum >= 5;
关于sql - Oracle - 分组依据为 "steps",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44136948/