0

我正在尝试使用 SQL 分析函数对薪水低于其工作部门平均水平的员工做出选择声明。上面的代码向我显示了所有员工及其部门的平均值。我该如何限制它,使其只选择工资<部门平均水平的员工?

SELECT NAME, SALARY, ID_DEP, AVG(SALARY) OVER (PARTITION BY ID_DEP) DEP_AVERAGE FROM EMPLOYEES;

4

1 回答 1

2

使用窗口函数和子查询:

select e.*
from (select e.*, 
             avg(salary) over (partition by id_dep) as avg_salary
      from employees e
     ) e
where salary < avg_salary;

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

于 2020-10-10T12:14:55.387 回答