查詢出部門名稱、部門的員工數、部門的平均工資、部門的最低收入僱員姓名和最高收入僱員的姓名,平均工資僱員
如題:
查詢出部門名稱、部門的員工數、部門的平均工資、部門的最低收入僱員姓名和最高收入僱員的姓名
這是oracle的預設Scott使用者下面的emp 和 dept 表間的一道思考題。
僱員表(emp)
記錄了每個僱員的基本資料
NO 欄位 類型 描述
1 empno Number(4) 僱員編號
2 ename Varchar2(10) 僱員姓名
3 job Varchar2(9) 工作職位
4 mgr Number(4) 僱員的領導(經理)編號
5 hierdate date 入職日期
6 sal Number(7,2) 月薪/工資
7 comm Number(7,2) 獎金
8 deptno Number(2) 僱員所屬部門的編號
部門表(emp)
記錄了每個部門的基本資料
NO 欄位 類型 描述
1 deptno Number(2) 部門編號(唯一)
2 dname Varchar2(14) 部門名稱
3 loc Varchar2(13) 地址
分析:要查詢出部門的員工數,平均工資,最低收入僱員姓名和最高收入僱員姓名,必須Crowdsourced Security Testing道部門的最高收入和最低收入
第一步:查詢出部門名稱,部門員工數,部門平均工資,部門最低收入和最高收入
select deptno, count(*), avg(sal), min(sal), max(sal) from emp group by deptno;
第二步:查詢最低收入者的姓名
select e.ename from emp e, (select deptno, count(*), avg(sal), min(sal) min_sal, max(sal) max_sal from emp group by deptno) t where e.deptno = e.deptnoand (e.sal = min_sal);
同理,也可以查詢最高收入者的姓名
select e.ename from emp e, (select deptno, count(*), avg(sal), min(sal) min_sal, max(sal) max_sal from emp group by deptno) t where e.deptno = e.deptnoand (e.sal = max_sal);
那如何同時查詢最低收入者和最高收入者的姓名呢?
第三步:給第一次查詢出來的部門最高收入和最低收入同時關聯兩張emp 表,分別擷取最高收入者和最高收入者的姓名
select d.dname, t.nu, t.avg_sal, t.min_sal, t.max_sal, e.ename, s.ename from dept d, emp e, emp s ,(select deptno, count(*) nu, avg(sal) avg_sal, min(sal) min_sal, max(sal) max_sal from emp group by deptno) twhere d.deptno = t.deptno and (e.deptno = t.deptno and e.sal = t.min_sal) and (s.deptno = t.deptno and s.sal = t.max_sal);