mysql over函数
时间: 2024-09-13 13:11:24 浏览: 77
32-视频33MySQL窗口函数
MySQL的`OVER`函数是用来定义一个窗口函数的框架,它与`PARTITION BY`和`ORDER BY`子句一起使用,可以对数据进行分区和排序,并对每个分区内的数据应用窗口函数进行计算。
窗口函数的特点是可以在每一行返回一个值,这个值是基于当前行及当前行之前或之后的行的计算结果。窗口函数包括但不限于`SUM()`, `COUNT()`, `AVG()`, `MIN()`, `MAX()`, `RANK()`, `DENSE_RANK()`等。
使用`OVER`函数的基本语法如下:
```sql
窗口函数(列名) OVER (
[PARTITION BY 分区列]
[ORDER BY 排序列]
[ROWS BETWEEN ... AND ...]
)
```
- `PARTITION BY`:用于将查询结果集分割成若干个分区,窗口函数会在每个分区内独立计算。
- `ORDER BY`:指定窗口函数计算时的排序方式。
- `ROWS BETWEEN ... AND ...`:定义窗口函数的作用范围,可以指定从当前行之前的第几行开始到当前行之后的第几行结束。
例如,如果我们想要计算每个员工的工资与其所在部门平均工资的差额,可以使用如下SQL语句:
```sql
SELECT
员工姓名,
工资,
AVG(工资) OVER (PARTITION BY 部门) AS 部门平均工资,
工资 - AVG(工资) OVER (PARTITION BY 部门) AS 差额
FROM 员工表;
```
阅读全文