在Oracle数据库中,PARTITION BY子句通常与窗口函数(也被称为分析函数)一起使用,以在结果集的分区上执行计算。PARTITION BY允许你将结果集分成多个逻辑分区,并在每个分区内独立地执行窗口函数的计算。这对于在大型数据集上执行分组计算非常有用,因为它可以避免对整个数据集进行全局排序,从而提高查询性能。
以下是PARTITION BY子句的一些用法和示例:
示例1:按列分区计算累计总和
假设你有一个销售数据表sales,其中包含sales_date和amount两列。你想计算每个日期的累计销售额。
sql
SELECT sales_date, amount,
SUM(amount) OVER (ORDER BY sales_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as cumulative_amount
FROM sales;
这个查询将计算从最早的销售日期到当前日期的累计销售额。但是,如果你想要按年份分区,并为每个年份计算独立的累计销售