怎么得到工资大于自己部门平均工资的员工信息,表是系统的emp表???

解决方案 »

  1.   

    select * from emp e where e.salary >= (select avg(salary) from emp p where p.empno=e.empno group by deptid)
      

  2.   


    已写入 file afiedt.buf  1  select * from emp,(select deptno,avg(sal) avgsal from emp group by deptno) t
      2* where t.deptno=emp.deptno and emp.sal>t.avgsal
    scott@YPCOST> /     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO     DEPTNO     AVGSAL
    ---------- ---------- --------- ---------- ------------------- ---------- ---------- ---------- ----
          7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600        300         30         30 1566.66667
          7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850                    30         30 1566.66667
          7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975        900         20         20       2175
          7788 SCOTT      ANALYST         7566 1987-04-19 00:00:00       3000        900         20         20       2175
          7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000        900         20         20       2175
          7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10         10 2916.66667已选择6行。
      

  3.   

    select *
    from tmp k
    where salary >(select avg(salary) FROM tmp where k.dep=dep)
      

  4.   

    select em.name,em.salary
    from 
    (select e.name,e.salary,avg(e.salary) over(partition by e.deptno) avg_sal from emp e
    ) em
    where em.salary>avg_sal 
      

  5.   


    scott@YPCOST> select * from emp t where sal>(select avg(sal) from emp where t.deptno=deptno);     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
          7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600        300         30
          7698 BLAKE      MANAGER         7839 1981-05-01 00:00:00       2850                    30
          7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975        900         20
          7788 SCOTT      ANALYST         7566 1987-04-19 00:00:00       3000        900         20
          7902 FORD       ANALYST         7566 1981-12-03 00:00:00       3000        900         20
          7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10已选择6行。
      

  6.   

    问楼上where em.salary>avg_sal 这里为什么不可以用where em.salary>e.avg_sal 
    我改成e.avg_sal 会报错啊
      

  7.   

    问7楼where em.salary>avg_sal 这里为什么不可以用where em.salary>e.avg_sal  
    我改成e.avg_sal 会报错啊
      

  8.   

    能说的详细一点吗?
    是作用域的问题
    但是在外层用到avg_sal不是应该加上别名吗???
     where em.salary>avg_sal 这么写实对的
    可是我这样where em.salary>e.avg_sal 
    就错了
    因该注意什么啊???
      

  9.   

    13楼
    改成你说的那样不对啊
    where em.salary>em.avg_sal 
      

  10.   

    select *
    from emp t
    where sal>(select avg(sal) FROM emp where t.dep=dep)6楼这种写法简洁一些
      

  11.   

    where em.salary>em.avg_sal 这个可不会错的,我都试过了可以的,你再看看其他地方是不是弄错了,呵呵!
      

  12.   


    这么多的人回复select * from emp a where a.sal>(select avg(sal) from emp b where a.deptno=b.deptno)