MySQL 8.0 及以上版本支持丰富的窗口函数,用于在查询结果的特定窗口范围内执行计算。以下是所有窗口函数的详细讲解,结合示例说明其用法和实际应用场景。
一、窗口函数基础语法
sql
复制
<窗口函数>([参数]) OVER (
[PARTITION BY 分区列]
[ORDER BY 排序列]
[ROWS | RANGE 窗口框架]
)
- PARTITION BY:将数据划分为多个分区,每个分区独立计算。
- ORDER BY:定义窗口内数据的排序方式。
- 窗口框架(可选):限定计算范围(如
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)。
二、核心窗口函数详解与示例
1. 排名函数
ROW_NUMBER()
- 功能:为每行分配唯一序号,序号从1开始递增。
- 示例:按部门分区,按工资降序排名。
sql
复制