Oracle的PARTITION BY子句用于在查询中对结果集进行分区。它可以根据指定的列或表达式将结果集分成多个分区,然后对每个分区进行聚合、排序或其他操作。

下面是一些PARTITION BY的用例示例:

  1. 聚合函数:
SELECT department_id, AVG(salary) OVER (PARTITION BY department_id) AS avg_salary
FROM employees;

这个查询将根据department_id对employees表进行分区,并计算每个分区的平均工资。

  1. 排序:
SELECT employee_id, last_name, salary, RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS salary_rank
FROM employees;

这个查询将根据department_id对employees表进行分区,并按照salary降序对每个分区中的员工进行排序,并为每个员工分配一个排名。

  1. 累计求和:
SELECT order_id, order_date, order_amount, SUM(order_amount) OVER (PARTITION BY order_date ORDER BY order_id) AS cumulative_sum
FROM orders;

这个查询将根据order_date对orders表进行分区,并按照order_id顺序计算每个分区中的订单金额的累计求和。

  1. 分析函数:
SELECT department_id, salary, MAX(salary) OVER (PARTITION BY department_id ORDER BY hire_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS max_salary
FROM employees;

这个查询将根据department_id对employees表进行分区,并按照hire_date顺序计算每个分区中的最高工资。分析函数中的ROWS BETWEEN子句定义了窗口的范围,从分区的第一行到当前行。

这些是PARTITION BY子句的一些用例示例,你可以根据自己的需求进行适当的调整和扩展

oraclepartition by用例

原文地址: http://www.cveoy.top/t/topic/h7DQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录