我有一个查询,我想在其中操作一列以返回仅包含另一个列中最后12个值中的最大值的数组(由于查询的其他部分)。
示例: 我想从以下位置添加列MaxLast12:
Month Power
1 10
2 16
3 8
4 14
5 15
6 3
7 6
8 10
9 11
10 12
11 12
12 12
13 18
14 12
To become:
Month Power MaxLast12
1 10 10
2 16 16
3 8 16
4 14 16
5 15 16
6 3 16
7 6 16
8 17 17
9 11 17
10 12 17
11 12 17
12 12 17
13 18 18
14 12 18
创建一个更简单的解决方案也将有所帮助,在该解决方案中,我仅在查询中仅包含12行(不会那么准确,但足以达到目的)仅包含最大值。需要执行以下操作:
Month Power
1 6
2 6
3 8
4 14
5 15
6 3
7 6
8 10
9 11
10 12
11 12
12 12
To become:
Month Power YearMax
1 10 17
2 16 17
3 8 17
4 14 17
5 15 17
6 3 17
7 6 17
8 17 17
9 11 17
10 12 17
11 12 17
12 12 17
由于我猜这两个问题的解决方案都将相似,因此请尽可能提供帮助。由于要修改现有类型的复杂查询,因此希望避免使用GROUP BY子句。
尝试使用max()来实现此目的,但是没有运气。
我正在使用SQL-developer。
答案 0 :(得分:3)
在Oracle中,您将使用窗口函数:
select month, power,
max(power) over (order by month rows between 11 preceding and current row)
from t;