从另一列 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 返回正在运行的最大列的主要内容,如果未能解决你的问题,请参考以下文章

用另一列选择最大数量

从另一列获取不同的行数

sql中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导

我需要使用索引和匹配从另一列条件匹配的列中提取数据

从另一列计算的列?

从另一列 pandas df 分配值的有效方法