如何使用 SQL 分析函数 select 工资低于部门平均水平的员工?
How to select employees with salary less then the average of their departament using SQL analytical functions?
我正在尝试使用 SQL 分析函数对工资低于其所在部门平均工资的员工做出 select 声明。
上面的代码显示了所有员工及其部门的平均值。我如何限制它,使其仅 select 工资低于部门平均水平的员工?
SELECT NAME, SALARY, ID_DEP, AVG(SALARY) OVER (PARTITION BY ID_DEP) DEP_AVERAGE FROM EMPLOYEES;
使用 window 函数和子查询:
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
子句中使用 window 函数。一些数据库支持 qualify
子句过滤 window 函数;但 Oracle 没有。
我正在尝试使用 SQL 分析函数对工资低于其所在部门平均工资的员工做出 select 声明。 上面的代码显示了所有员工及其部门的平均值。我如何限制它,使其仅 select 工资低于部门平均水平的员工?
SELECT NAME, SALARY, ID_DEP, AVG(SALARY) OVER (PARTITION BY ID_DEP) DEP_AVERAGE FROM EMPLOYEES;
使用 window 函数和子查询:
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
子句中使用 window 函数。一些数据库支持 qualify
子句过滤 window 函数;但 Oracle 没有。