You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL报错Misuse of aggregate function AVG() 如何查询高于平均薪资的员工

错误原因

WHERE子句的执行优先级高于聚合函数计算,数据库执行WHERE条件筛选时,还未完成全表聚合计算,无法得到AVG(employee_salary)的结果,因此会抛出聚合函数误用的报错。

修正写法

写法1:子查询实现(全数据库兼容)

先通过子查询提前计算出全表平均薪资,再放到外层WHERE条件做判断:

SELECT employee_id, employee_name, employee_salary
FROM Employees
WHERE employee_salary > (SELECT AVG(employee_salary) FROM Employees);

手动验证全表平均薪资:(35000+50000+45000+55000+45000)÷5 = 46000,筛选薪资大于46000的员工刚好符合你期望的输出结果。

写法2:CTE实现(适配MySQL8.0+、PostgreSQL、SQL Server等支持CTE的数据库)

通过公共表表达式预先存储平均薪资,再关联查询筛选:

WITH avg_salary AS (
    SELECT AVG(employee_salary) AS avg_val FROM Employees
)
SELECT e.employee_id, e.employee_name, e.employee_salary
FROM Employees e
JOIN avg_salary a ON e.employee_salary > a.avg_val;

内容的提问来源于stack exchange,提问作者user01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:24:03