首页/数据/SQL 速查/窗口函数概念与语法
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

窗口函数概念与语法

窗口函数在保留明细行的同时做组内计算:函数 OVER (PARTITION BY … ORDER BY … [帧]);MySQL 8.0+ 与 PostgreSQL 均支持。

SQL 速查数据更新于 2026-10-12
特点不折叠行:每行都能看到组内计算结果
语法函数() OVER (PARTITION BY 分组 ORDER BY 排序 [ROWS/RANGE 帧])
对比GROUP BY 每组只输出一行

示例

示例
SELECT id, dept_id, salary,
       AVG(salary) OVER (PARTITION BY dept_id) AS dept_avg
FROM employees;

易错点

  • 窗口函数不能写在 WHERE 里(逻辑上在 WHERE 之后计算),筛选要用子查询或 CTE 包一层
  • MySQL 8.0 之前没有窗口函数,老版本用自连接或变量模拟

数据来源与参考

  • MySQL 8.0 Reference Manual · Window Functions
  • PostgreSQL Documentation · Window Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌