Oracle分析函数详解:开窗函数与 AVG 操作

需积分: 10 1 下载量 100 浏览量 更新于2024-09-12 收藏 79KB DOC 举报
"Oracle 常用函数包括分析函数,如开窗函数,这些函数在 Oracle 8.1.6 版本后被引入。分析函数可以计算基于组的聚合值,但与普通聚合函数不同,它们能为每个组返回多行。分析函数的应用涉及到对数据窗口的指定,数据窗口的大小可能随着行的变化而变化。例如,`OVER (ORDER BY salary)` 按薪资排序进行累计,`OVER (PARTITION BY deptno)` 按部门分区,而 `OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING)` 定义的数据窗口包含了当前行前后薪资幅度不超过50的行。此外,`OVER (ORDER BY salary ROWS BETWEEN 50 PRECEDING AND 150 FOLLOWING)` 则定义了一个包含当前行前50行和后150行的数据窗口。`OVER (ORDER BY salary ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)` 表示从第一行到最后一行的窗口,等同于使用范围边界。 `AVG` 函数是其中一个重要的分析函数,用于计算一组或数据窗口内表达式的平均值。例如,在员工表中,可以使用 `AVG` 计算每个员工的平均薪水,考虑当前员工、其上级和下级的平均薪水。以下是一个示例查询: ```sql SELECT manager_id, last_name, hire_date, salary, AVG(salary) OVER (PARTITION BY manager_id ORDER BY salary ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg FROM employees; ``` 在这个示例中,`c_mavg` 列将显示每个员工及其直接上下级的平均薪水。查询首先按经理ID分组,然后按薪水排序,并计算每个组内相邻三行的平均薪资。 主要参考资料包括 Tom Kyte 的《expert one-on-one》和 Oracle9i SQL Reference 第6章,这两本书提供了深入的Oracle SQL知识和函数用法。" 以上是对Oracle常用函数,尤其是分析函数和`AVG`函数的详细解释,这些函数在处理复杂查询和数据分析时非常有用。通过掌握这些函数,数据库管理员和开发人员能够更有效地操纵和汇总数据。