用的数据库教学内容上emp表中的数据。
我的思路是先查询出各部门的平均工资:
select avg(sal) from emp group by deptno;
之后再查询出上一步里面的最大值;这一步卡住了:
有答案是这样的,select max(avg(sal)) from emp group by deptno;
我试了这个语句,不行,至少在mysql上不行,请大牛解答解答。
select *,max(e.avg_sal) from (select *,avg(sal) avg_sal from emp group by deptno) e
这是求部门信息的
select * from dept where deptno in (select deptno from emp group by deptno having avg(sal)=(select avg(sal) a from emp group by deptno order by a desc limit 0,1));
select max(e.sal) from (select avg(sal) sal from emp group by deptno) e
这是求最高平均工资,你不是求部门信息么?
select *from dept where deptno=(select a.deptno from (select deptno,max(e.sal) from(select deptno,sal,avg(sal)a from emp group by deptno)e)a);
with t1 as (select deptno, avg(sal) as avg_sal from emp group by deptno),--求出各部门的平均工资
t2 as (select t1.deptno from t1 where t1.avg_sal in (select max(avg_sal) from t1))--若平均值和最大值相同则取出部门编号
select * from emp where deptno in (select t2.deptno from t2);--用in是为了防止有多个最值,没准就有2个部门的平均值相同了呢
select * from dept where deptno=(select deptno from emp group by deptno order by avg(sal) desc limit 0,1);