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

部门半年平均薪资≤50000的员工数量统计SQL查询求助

正确SQL语句写法及问题解析

原语句的错误点

  • 语法顺序错误:WHERE子句必须放在GROUP BY之前,不能后置。
  • 聚合条件过滤错误:对聚合函数(如AVG())的过滤不能用WHERE,必须使用HAVING子句——WHERE用于过滤单条行数据,HAVING用于过滤分组后的聚合结果。

需求对应的两种场景写法

场景1:统计每个符合条件部门的员工数量

如果要得到每个半年平均薪资≤50000的部门各自的员工数,语句如下:

SELECT DEPARTMENT_ID, COUNT(EMPLOYEE_ID) AS Total
FROM HR.EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING AVG(SALARY * 6) <= 50000;

也可以简化计算(AVG(SALARY*6)=6*AVG(SALARY)),提升查询效率:

SELECT DEPARTMENT_ID, COUNT(EMPLOYEE_ID) AS Total
FROM HR.EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING AVG(SALARY) <= 50000/6;

场景2:统计所有符合条件部门的员工总数

如果要得到所有属于半年平均薪资≤50000部门的员工总数量,可以用子查询先筛选出符合条件的部门ID,再统计对应员工:

SELECT COUNT(EMPLOYEE_ID) AS Total
FROM HR.EMPLOYEES
WHERE DEPARTMENT_ID IN (
    SELECT DEPARTMENT_ID
    FROM HR.EMPLOYEES
    GROUP BY DEPARTMENT_ID
    HAVING AVG(SALARY * 6) <= 50000
);

内容的提问来源于stack exchange,提问作者Mr.Marshal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:46:01