什么是Oracle?

OVER子句的含义
有帮助吗?

解决方案

在OVER子句指定分区,订货及窗口“在其中”的解析函数操作。

例如,这个计算的移动平均值:

AVG(amt) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)

date   amt   avg_amt
=====  ====  =======
1-Jan  10.0  10.5
2-Jan  11.0  17.0
3-Jan  30.0  17.0
4-Jan  10.0  18.0
5-Jan  14.0  12.0

它工作在比行的移动窗口(3行宽),按日期排序。

此计算运行平衡:

SUM(amt) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

date   amt   sum_amt
=====  ====  =======
1-Jan  10.0  10.0
2-Jan  11.0  21.0
3-Jan  30.0  51.0
4-Jan  10.0  61.0
5-Jan  14.0  75.0

它工作在包括当前行和所有以前的行的窗口。

此计算最大,分别对每个 “部门”:

MAX(amt) OVER (PARTITION BY dept)

dept  amt   max_amt
====  ====  =======
ACCT   5.0   7.0
ACCT   7.0   7.0
ACCT   6.0   7.0
MRKT  10.0  11.0
MRKT  11.0  11.0
SLES   2.0   2.0

它工作在包括用于特定部门的所有行的窗口。

SQL小提琴: http://sqlfiddle.com/#!4/9eecb7d/122

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top