有两张表emp雇员表和dep部门表
emp表包括:id,name,dep_id,wages(薪水)四个字段
dep表包括:id,name两个字段。
需要得到:薪水大于所在部门平均薪水的人员信息。品均

解决方案 »

  1.   

    select ename,job,sal from emp ,  
         (  
            select deptno,avg(sal) as avgsal from emp  
            group by deptno   
         ) tmp_dept  
       where emp.deptno=tmp_dept.deptno and sal >tmp_dept.avgsal;  
      

  2.   

    好像有点问题。mysql里面报错了。。
      

  3.   

    哦,我用的oracle数据库
    不过应该也不会报错吧,我的那条sql语句你的改改啊
    字段都不一样的嘛,只是给你一个思路啊
      

  4.   

    select id, name ,dep_id from emp e1,dep d1 where e1.dep_id=d1.id and salary>(select avg(salary) avgsa,dep_idfrom emp e1,dep d1 where e1.dep_id=d1.id group by dep_id)
    group by dep_id
      

  5.   

    主要考察Group by子句和嵌套查询两个知识点吧
    你可以试试下面的代码。
    SELECT name 
    FROM emp x
    where 
    wages >(select avg(wages)
    from emp y
    where x.dep_id = y.dep_id
    group by dep_id)
    ;
    希望对你有所帮助~
      

  6.   

    select name,wages,dep_id,avg(wages) from emp 
    group by dep_id
    having wages>avg(wages)没测试过,不知对不对
      

  7.   

    select e.id, e.name, e.dep_id, a.avgwages from emp e,(select dep_id, avg(wages) avgwages from emp group by dep_id) a where a.dep_id=e.dep_id and e.wages>a.avgwavges; 
      

  8.   

    Oracle的查询   
    scott自带三张表:emp dept salgrade ,你看一下这个,很全。点这里
      

  9.   

    select id,name,dep_id,wages from emp a where a.id=
    (select id from emp b where b.wages>(
    select avg(wages) from emp c where b.dep_id=c.deptid group by dep_id));