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

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

执行 聚合 顺序 函数 444    来源:    2025-04-01

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

在SQL查询中,聚合函数和排序的执行顺序遵循特定的逻辑流程,理解这个顺序对于编写高效查询至关重要。

标准SQL查询执行顺序

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

聚合函数与排序的关系

  • 聚合函数(如SUM, COUNT, AVG等)是在GROUP BY之后执行的
  • ORDER BY是在所有聚合计算完成后执行的

示例说明

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

执行顺序: 1. 从employees表获取数据 2. 过滤hire_date > '2020-01-01'的记录 3. 按department分组 4. 过滤掉员工数≤5的部门 5. 计算每个部门的平均工资 6. 按平均工资降序排序 7. 只返回前10条记录

常见误区

  1. 在WHERE中使用聚合函数:这是不允许的,因为WHERE在GROUP BY之前执行

    • 错误:WHERE AVG(salary) > 50000
    • 正确:使用HAVING代替
  2. 在GROUP BY中使用列别名:GROUP BY在SELECT之前执行,不能使用SELECT中定义的别名

    • 错误:GROUP BY dept_alias
    • 正确:使用原始列名

理解这个执行顺序有助于编写正确且高效的SQL查询,避免常见的逻辑错误。