Return 运行 来自另一列的最大列 SQL
Return running max column from another column SQL
我有一个查询,我想在其中将一列操作为 return 一个数组,该数组仅包含另一列的最后 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。
在 Oracle 中,您将使用 window 函数:
select month, power,
max(power) over (order by month rows between 11 preceding and current row)
from t;
我有一个查询,我想在其中将一列操作为 return 一个数组,该数组仅包含另一列的最后 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。
在 Oracle 中,您将使用 window 函数:
select month, power,
max(power) over (order by month rows between 11 preceding and current row)
from t;