在Oracle中,OVER函数用于在窗口函数中指定窗口的范围。它通常与聚合函数一起使用,例如SUM()、AVG()等。以下是一个示例:
SELECT
employee_id,
salary,
SUM(salary) OVER (ORDER BY employee_id) AS running_total
FROM
employees;
在上面的示例中,我们对employees表中的salary字段进行累积求和,并按employee_id进行排序。运行结果会显示每个员工的累积工资总和。
OVER子句中的ORDER BY子句指定了排序的规则,可以根据需要进行修改,比如按照salary字段排序。
除了ORDER BY之外,OVER函数还可以与PARTITION BY一起使用,以对窗口进行分组。
SELECT
department_id,
employee_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_salary
FROM
employees;
在上面的示例中,我们根据department_id对员工的salary字段进行分组,并计算每个部门的平均工资。结果中会显示每个员工的平均工资。
总的来说,Oracle的OVER函数可以灵活应用于各种窗口函数场景,通过合理设置OVER子句的参数,可以实现不同的窗口分析需求。