有一个用户表TUser
字段name   分数point
zhang        80
wang         82
liu          39
sui          90
hardy        100部门表TDept 
用户名uName   部门名称deptName
 zhang             开发部
 wang              开发部
 liu               技术部
 sui               市场部
 hardy             研发部用一句sql,查询出部门平均分数最高的部门的名称。                

解决方案 »

  1.   

    select deptName from (select b.deptName, avg(a.point) from TUser a, TDept  b where a.uName=b.uName group by b.deptName) where rownum =1;
      

  2.   

    create table tuser(name varchar2(10),point int);
    create table tdept(uname varchar2(10),deptname varchar2(10)); 
    insert into tuser values('zhang',80);
    insert into tuser values('wang',82);
    insert into tuser values('liu',39);
    insert into tuser values('sui',90);
    insert into tuser values('hardy',100);
    insert into tdept values('zhang','开发部');
    insert into tdept values('wang','开发部');
    insert into tdept values('liu','技术部');
    insert into tdept values('sui','市场部');
    insert into tdept values('hardy','研发部');
    commit;
    select deptname, ag
      from (select deptname,
                   avg(point) over(partition by deptname order by point) ag
              from (select u.name, u.point, d.deptname
                      from tuser u, tdept d
                     where u.name = d.uname)
             order by ag desc)
     where rownum = 1;
    或者1楼兄弟的也可以
      

  3.   

    ok可以了,感谢二位。
    我用的是mysql测试的。。稍微改了下
    select s.sdeptname from (select d.deptname sdeptname,avg(a.point1) from tdept d,tuser a where a.name=d.uname  group by d.deptname order by avg(a.point1) desc)s limit 0,1;