gpt4 book ai didi

sql - Oracle - 分组依据为 "steps"

转载 作者:行者123 更新时间:2023-12-04 23:47:22 24 4
gpt4 key购买 nike

我必须下表:

|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/

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