1.查詢本部門大于平均工資的員工信息
SELECT *
from emp,
(SELECT AVG(sal) avg_sal,deptno
from emp
GROUP BY deptno)a
WHERE emp.sal>a.avg_sal and a.deptno=emp.deptno
第一步:先運用子查詢查詢出每個部門的平均工資,并把查詢結(jié)果當成一張表
第二步:通過部門號連接子表和主表,查詢出主表中大于子表中平均工資的員工信息
2.找出平均工資最高的部門編號
SELECT AVG(sal) avg_sal
FROM emp
GROUP BY deptno
ORDER BY avg_sal DESC
LIMIT 0,1
3.選擇姓名中有字母A和E的員工姓名where ename LIKE '%A%' OR '%E%' 表示的是一定有A,但是E可有可無
SELECT ename FROM emp where ename LIKE '%A%' OR ename LIKE'%E%'
``
4.平均薪水最高的部門編號
select deptno
from
(select avg(sal) avg_sal,deptno from emp group by deptno)
where avg_sal=
(select max(avg_sal) from
(select avg(sal) avg_sal,deptno from emp group by deptno))
//可以寫成max(avg(sal))
步驟:先找出每個部門的平均薪水,再找出平均薪水里的最大值,在找出當平均薪水等于最大值時候的部門編號
注:為什么不同時找平均薪水最大值和部門編號呢?因為最大值只有一個,而可能有多個部門具有最高平均薪水
注:如果查詢層有聚合函數(shù),最好這一次查詢不再查詢其它內(nèi)容,因為聚合函數(shù)對應(yīng)的值可能不止一個,而和聚合函數(shù)一起輸出的話,另一個查詢的值也只能有一個,導致了誤差的出現(xiàn)
5.求比普通員工最高工資高的經(jīng)理人名稱
先求普通員工最高工資,再求經(jīng)理人工資比最高工資高的
SELECT ename,sal
from emp
WHERE empno in (select mgr from emp WHERE mgr is not null) AND sal>
(SELECT max(sal)
from emp
WHERE empno not in
(select mgr from emp WHERE mgr is not null))