gpt4 book ai didi

sql - Oracle 中的 OVER 子句

转载 作者:行者123 更新时间:2023-12-03 05:29:01 26 4
gpt4 key购买 nike

Oracle中的OVER子句是什么意思?

最佳答案

OVER 子句指定分析函数运行的分区、排序和窗口。

示例#1:计算移动平均值

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 行宽)上运行,按日期排序。

示例#2:计算运行余额

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

它在一个包含当前行和所有先前行的窗口上运行。

注意:对于具有指定排序 ORDEROVER 子句的聚合,默认窗口是 UNBOUNDED PRECEDINGCURRENT ROW ,所以上面的表达式可以简化为,具有相同的结果:

SUM(amt) OVER (ORDER BY date)

示例#3:计算每组内的最大值

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 fiddle :http://sqlfiddle.com/#!4/9eecb7d/122

关于sql - Oracle 中的 OVER 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1092120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com