从另一列SQL返回正在运行的最大列

本教程将介绍从另一列SQL返回正在运行的最大列的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

从另一列SQL返回正在运行的最大列 教程 第1张

问题描述

我有一个查询,我想在其中操作一列以返回一个数组,该数组仅包含另一列中最后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

因为我猜测这两个问题的解决方案将是相似的,所以任何可能的帮助都是可能的。我希望避免使用usign GROUP BY子句,因为我正在修改一种现有的复杂查询。

尝试使用max()实现此目的,但没有成功。

我正在使用SQL-Developer。

推荐答案

在Oracle中,请问使用窗口函数:

select month, power,
 max(power) over (order by month rows between 11 preceding and current row)
from t;

好了关于从另一列SQL返回正在运行的最大列的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。