如何使用 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;

您不能在wherehaving 子句中使用窗口函数。一些数据库支持过滤窗口函数的qualify 子句;但甲骨文没有。

【讨论】:

以上是关于如何使用 SQL 分析函数选择工资低于部门平均水平的员工?的主要内容,如果未能解决你的问题,请参考以下文章