如何使用 SQL 分析函数选择工资低于部门平均水平的员工?
Posted
技术标签:
【中文标题】如何使用 SQL 分析函数选择工资低于部门平均水平的员工?【英文标题】:How to select employees with salary less then the average of their departament using SQL analytical functions? 【发布时间】:2020-10-10 12:12:31 【问题描述】:我正在尝试使用 SQL 分析函数对薪水低于其所在部门平均水平的员工做出选择语句。 上面的代码向我显示了所有员工及其部门的平均值。我该如何限制它,使其只选择工资
SELECT NAME, SALARY, ID_DEP, AVG(SALARY) OVER (PARTITION BY ID_DEP) DEP_AVERAGE FROM EMPLOYEES;
【问题讨论】:
【参考方案1】:使用窗口函数和子查询:
select e.*
from (select e.*,
avg(salary) over (partition by id_dep) as avg_salary
from employees e
) e
where salary < avg_salary;
您不能在where
或having
子句中使用窗口函数。一些数据库支持过滤窗口函数的qualify
子句;但甲骨文没有。
【讨论】:
以上是关于如何使用 SQL 分析函数选择工资低于部门平均水平的员工?的主要内容,如果未能解决你的问题,请参考以下文章
SQL数据库 计算出每个部门的平均工资 最高工资和最低工资 语法怎么写?