Oracle 中的 OVER 子句
Oracle中的OVER子句是什么意思?
What is the meaning of the OVER clause in Oracle?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
Oracle中的OVER子句是什么意思?
What is the meaning of the OVER clause in Oracle?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
OVER
子句指定分析函数运行的“分区、排序和窗口”。示例 #1:计算移动平均值
它在按日期排序的行上的移动窗口(3 行宽)上运行。
示例 #2:计算运行余额
它在包含当前行和所有先前行的窗口上运行。
注意:对于带有指定排序
ORDER
的OVER
子句的聚合,默认窗口是UNBOUNDED PRECEDING
到CURRENT ROW
>,因此上面的表达式可以简化为,具有相同的结果:示例#3:计算每个组内的最大值
它在包含特定部门的所有行的窗口上进行操作。
SQL小提琴:http://sqlfiddle.com/#!4/9eecb7d/122
The
OVER
clause specifies the partitioning, ordering and window "over which" the analytic function operates.Example #1: calculate a moving average
It operates over a moving window (3 rows wide) over the rows, ordered by date.
Example #2: calculate a running balance
It operates over a window that includes the current row and all prior rows.
Note: for an aggregate with an
OVER
clause specifying a sortORDER
, the default window isUNBOUNDED PRECEDING
toCURRENT ROW
, so the above expression may be simplified to, with the same result:Example #3: calculate the maximum within each group
It operates over a window that includes all rows for a particular dept.
SQL Fiddle: http://sqlfiddle.com/#!4/9eecb7d/122
您可以使用它将一些聚合函数转换为解析函数:
将返回具有单个最大值的
1
行,将返回具有运行最大值的所有行。
You can use it to transform some aggregate functions into analytic:
will return
1
row with a single maximum,will return all rows with a running maximum.
它是 Oracle 分析函数的一部分。
It's part of the Oracle analytic functions.
使用 OVER 的另一种方法是让 select 中的结果列对另一个“分区”进行操作。
这:
对于 ssn 被另一行共享的每一行,在 hasDuplicateSsn 中返回 1。 非常适合为不同错误报告等的数据制作“标签”。
Another way to use OVER is to have a result column in your select operate on another "partition", so to say.
This:
returns 1 in hasDuplicateSsn for each row whose ssn is shared by another row. Great for making "tags" for data for different error reports and such.