over partition by 的使用方法
时间: 2023-07-01 17:23:47 浏览: 102
Oracle查询中OVER (PARTITION BY ..)用法
over partition by 是 SQL 中的一个窗口函数,用于在结果集中对数据进行分组,使得在每个分组内,都可以对数据进行聚合、排序等操作。其基本语法如下:
```
SELECT col1, col2, ..., aggregate_function(col)
OVER (PARTITION BY partition_col1, partition_col2, ...)
[ORDER BY order_col1, order_col2, ...]
[ROWS/RANGE BETWEEN window_start AND window_end]
FROM table_name;
```
其中,partition_col1, partition_col2, ... 是用于分组的列,aggregate_function 是聚合函数,order_col1, order_col2, ... 是用于排序的列,ROWS/RANGE BETWEEN window_start AND window_end 是用于指定窗口范围的语句。
举个例子,假设我们有一个表 orders,其中包含客户 ID、订单日期和订单金额等信息。如果我们想要计算每个客户的订单金额总额,并按照客户 ID 排序,可以使用以下 SQL 语句:
```
SELECT customer_id, order_date, order_amount,
SUM(order_amount) OVER (PARTITION BY customer_id
ORDER BY order_date
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS total_amount
FROM orders
ORDER BY customer_id, order_date;
```
这个语句将结果集按照客户 ID 和订单日期排序,然后在每个客户 ID 分组内,计算出订单金额的累计总额,最后将结果按照客户 ID 和订单日期排序。
阅读全文