超过分区的最低值大于平均值

时间:2017-04-11 19:24:52

标签: sql database

我必须找到 部门的最低工资高于部门的平均工资。

1 个答案:

答案 0 :(得分:1)

由于您未提供表模式,因此我假设关系为emp(empid,deptid,salary)。然后你可以找到每个部门的最低工资,这个工资大于这个部门的平均工资:

select emp.deptid, min(emp.salary) 
from ( 
   select deptid, avg(salary) avg_sal 
   from emp group by deptid ) 
x join emp on x.deptid = emp.deptid 
where emp.salary >= x.avg_sal 
group by emp.deptid 

如果您还希望获得您在问题中不需要的员工,那么您可以使用row_number(),如下所示:

; with cte as (
    select rn = row_number() over (partition by emp.deptid order by emp.salary asc), emp.*
    from 
    (
        select deptid, avg(salary) avg_sal
        from emp 
        group by deptid
    ) x join emp on x.deptid = emp.deptid
    where emp.salary >= x.avg_sal
)
select x.empid, x.deptid, x.salary 
from cte 
where rn = 1