题
什么是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
它工作在包括用于特定部门的所有行的窗口。
其他提示
可以使用它来变换一些聚集函数到分析:
SELECT MAX(date)
FROM mytable
将返回1
行具有单个最大值,
SELECT MAX(date) OVER (ORDER BY id)
FROM mytable
将返回所有行与正在运行的最大值。
这是甲骨文解析函数的。
不隶属于 StackOverflow