在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子句的參數,可以實現不同的窗口分析需求。