不,HAVING子句不是在SELECT子句之前执行的。SQL语句的逻辑执行顺序如下:
SELECT department, AVG(salary) AS avg_salary
FROM employees
WHERE hire_date > '2020-01-01'
GROUP BY department
HAVING AVG(salary) > 50000
ORDER BY avg_salary DESC;
在这个例子中: 1. 先执行FROM获取employees表数据 2. 执行WHERE过滤符合条件的行 3. 执行GROUP BY按部门分组 4. 执行HAVING过滤平均工资>50000的部门 5. 执行SELECT计算并命名avg_salary 6. 最后执行ORDER BY排序