插件窝 干货文章 SQL 查询中,聚合函数和排序的执行顺序是怎样的?

SQL 查询中,聚合函数和排序的执行顺序是怎样的?

执行 聚合 函数 分组 737    来源:    2025-03-31

SQL 查询中聚合函数和排序的执行顺序

在 SQL 查询中,聚合函数和排序的执行顺序是理解查询逻辑的关键。以下是它们的执行顺序:

标准执行顺序

  1. FROM 和 JOIN - 首先确定数据来源
  2. WHERE - 过滤行数据
  3. GROUP BY - 分组数据
  4. 聚合函数 - 对每个分组计算聚合值
  5. HAVING - 过滤分组后的数据
  6. SELECT - 选择要返回的列
  7. ORDER BY - 对结果进行排序
  8. LIMIT/OFFSET - 限制返回的行数

关键点说明

  • 聚合函数(如 COUNT, SUM, AVG, MAX, MIN) 是在 GROUP BY 分组之后执行的
  • ORDER BY 是在所有数据处理完成后最后执行的步骤之一
  • 不能在 WHERE 子句中使用聚合函数,因为 WHERE 在 GROUP BY 之前执行
  • 可以在 HAVING 子句中使用聚合函数,因为 HAVING 在 GROUP BY 之后执行

示例

SELECT department, COUNT(*) as employee_count
FROM employees
WHERE hire_date > '2020-01-01'
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY employee_count DESC;

执行顺序: 1. 从 employees 表获取数据 2. 过滤 hire_date > '2020-01-01' 的记录 3. 按 department 分组 4. 计算每组的 COUNT(*) 5. 过滤掉 employee_count ≤ 5 的组 6. 按 employee_count 降序排列结果

理解这个顺序有助于编写高效、正确的 SQL 查询语句。