emp: empno,deptno,sal
select b.deptno
  from (select deptno,count(*) c1
          from emp
         where sal > ( select avg(sal) from emp )
         group by deptno) a,
       emp b
where a.deptno = b.deptno
group by b.deptno
having count(*) = a.c1

解决方案 »

  1.   

    select b.deptno
      from (select deptno,count(*) c1
              from emp
             where sal > ( select avg(sal) from emp )
             group by deptno) a,
           emp b
    where a.deptno = b.deptno
    group by b.deptno,c1
    having count(*) = a.c1
      

  2.   

    所有的部门除去有员工工资低于平均工资的部门
    select deptno from emp
    minus
    select deptno from emp 
      where sal<(select avg(sal) from emp)  
      group by deptno
      

  3.   

    楼上的想法好,如此可改成
        select distinct deptno from emp a
         where not exists 
              ( select 1 from emp b 
                 where a.deptno = b.deptno
                   and sal < (select avg(sal) from emp) )
      

  4.   

    把 < 换成  <=