从另一列 SQL 返回正在运行的最大列
Posted
技术标签:
【中文标题】从另一列 SQL 返回正在运行的最大列【英文标题】:Return running max column from another column SQL 【发布时间】:2018-11-21 15:40:13 【问题描述】:我有一个查询,我想在其中操作一个列以返回一个数组,该数组仅包含来自另一列的最后 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 开发人员。
【问题讨论】:
请标记您真正使用的DBMS
。
谢谢,忘记了。
【参考方案1】:
在 Oracle 中,您将使用窗口函数:
select month, power,
max(power) over (order by month rows between 11 preceding and current row)
from t;
【讨论】:
这些类型的函数将帮助我很多,感谢您的快速回答!以上是关于从另一列 SQL 返回正在运行的最大列的主要内容,如果未能解决你的问题,请参考以下文章