在Oracle中,PARTITION BY子句用于將查詢結果按照指定的列或表達式分成不同的分組。它常常與分組函數一起使用,以便對每個分組進行聚合計算。
具體用法如下:
SELECT 列1, 列2, ..., 分組函數(列) OVER (PARTITION BY 列或表達式 ORDER BY 列)
FROM 表名;
其中,列1、列2等為要查詢的列,分組函數為聚合函數(如SUM、AVG等),列為分組的依據列或表達式,表名為要查詢的表名。
示例:
假設有一個員工表employees,包含員工ID(employee_id)、部門ID(department_id)和工資(salary)等字段,我們希望計算每個部門內的員工工資總和。
SELECT department_id, SUM(salary) OVER (PARTITION BY department_id ORDER BY employee_id) as total_salary
FROM employees;
這個查詢會根據部門ID進行分組,并按照員工ID進行排序。對于每個分組,將計算對應部門中所有員工的工資總和,并將結果新的列返回。