在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进行排序。对于每个分组,将计算对应部门中所有员工的工资总和,并将结果新的列返回。