sql - 从平均工资低于的部门中选择员工
问题描述
我必须编写查询,返回平均工资小于 12000 的部门的所有员工。我写下了这个查询
SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID,FIRST_NAME,LAST_NAME
HAVING AVG(SALARY) < 12000
ORDER BY LAST_NAME ASC;
但它似乎不起作用。而不是从这些部门中获取所有员工,而只获取薪水小于 12000 的员工。如何正确编写此查询?提前致谢。
解决方案
您需要该部门的平均工资。我会使用窗口函数:
SELECT DEPARTMENT_ID, FIRST_NAME, LAST_NAME
FROM (SELECT e.*, AVG(SALARY) OVER (PARTITION BY DEPARTMENT_ID) as avg_salary_dept
FROM EMPLOYEES e
) e
WHERE avg_salary_dept < 12000
ORDER BY LAST_NAME ASC;
推荐阅读
- html - 切换 JSON 对象值
- raspberry-pi - 如何通过 PulseAudio RTP 单播将音频流式传输到 Raspberry Pi?
- algorithm - 不是很大哦,渐近符号 {O(f(n)} 算法可以拥有的最慢运行时间?(它给出了渐近上限,这意味着最慢的运行时间)
- javascript - 没有回调函数的 SetTimeout() 调用行为异常
- c# - 如何在 Xamarin 中取消请求?
- python - 使用 scipy quad 的重叠系数未按预期工作
- xml - 基于 XML 输入创建字符串 - int 对的动态列表/数组
- mql4 - 我如何计算冒着账户余额 X% 风险的手数
- javascript - 将数字字符串转换为数组中的数字
- performance - LINQ:提高“查询以从字典列表中查找所有字典的性能,其中给定键至少具有值列表中的一个值”