1. 程式人生 > >經典MySQL的sql語句面試題

經典MySQL的sql語句面試題

一、取得平均薪水最高的部門的部門編號

第一步:求出部門的平均薪水

select  e.deptno, avg(e.sal) as avgsal  from emp e  group by e.deptno;

deptnoavgsal
102916.666667
202715.000000
301566.666667

第二步:將以上查詢結果當成臨時表t(deptno, avgsal),查詢平均薪水的最高值

select max(t.avgsal) as maxAvgSal from t;

將t指向上述查詢結果:

select max(t.avgsal) as maxAvgSal from (select  e.deptno, avg(e.sal) as avgsal  from emp e  group by e.deptno)  t;

maxAvgSal
2916.666667

第三步:過濾第一步的查詢結果,將第二步查詢到的最高值代入:

select  e.deptno, avg(e.sal) as avgsal  from emp e  group by e.deptno  having avgsal = 2916.666667;  

轉換成:

select  e.deptno, avg(e.sal) as avgsal  from emp e  group by e.deptno  having avgsal = 

(select max(t.avgsal) as maxAvgSal from (select  e.deptno, avg(e.sal) as avgsal  from emp e  group by e.deptno)  t);