查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名
2017-09-18 13:54
1586 查看
如题:
查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名
这是oracle的默认Scott用户下面的emp 和 dept 表间的一道思考题。
记录了每个雇员的基本信息
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) 雇员所属部门的编号
记录了每个部门的基本信息
NO 字段 类型 描述
1 deptno Number(2) 部门编号(唯一)
2 dname Varchar2(14) 部门名称
3 loc Varchar2(13) 地址
分析:要查询出部门的员工数,平均工资,最低收入雇员姓名和最高收入雇员姓名,必须先知道部门的最高收入和最低收入
第一步:查询出部门名称,部门员工数,部门平均工资,部门最低收入和最高收入
[sql] view
plain copy
select deptno, count(*), avg(sal), min(sal), max(sal) from emp group by deptno;
第二步:查询最低收入者的姓名
[sql] view
plain copy
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.deptno
and (e.sal = min_sal);
同理,也可以查询最高收入者的姓名
[sql] view
plain copy
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.deptno
and (e.sal = max_sal);
那如何同时查询最低收入者和最高收入者的姓名呢?
第三步:给第一次查询出来的部门最高收入和最低收入同时关联两张emp 表,分别获取最高收入者和最高收入者的姓名
[sql] view
plain copy
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) t
where 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);
查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名
这是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) 地址
分析:要查询出部门的员工数,平均工资,最低收入雇员姓名和最高收入雇员姓名,必须先知道部门的最高收入和最低收入
第一步:查询出部门名称,部门员工数,部门平均工资,部门最低收入和最高收入
[sql] view
plain copy
select deptno, count(*), avg(sal), min(sal), max(sal) from emp group by deptno;
第二步:查询最低收入者的姓名
[sql] view
plain copy
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.deptno
and (e.sal = min_sal);
同理,也可以查询最高收入者的姓名
[sql] view
plain copy
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.deptno
and (e.sal = max_sal);
那如何同时查询最低收入者和最高收入者的姓名呢?
第三步:给第一次查询出来的部门最高收入和最低收入同时关联两张emp 表,分别获取最高收入者和最高收入者的姓名
[sql] view
plain copy
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) t
where 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);
相关文章推荐
- 查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名
- 查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名
- 有一张员工表,有员工名称,部门编号,工资收入,查询每个部门中收入前三的人员清
- 有一张员工表,有员工名称,部门编号,工资收入,查询每个部门中收入前三的人员清单
- 查询每个部门工资最低的两个员工的编号,姓名,工资
- 查询出每个雇员的姓名,工资,部门名称,工资在公司的等级及其领导的姓名,领导的工资,以及领导所对应的等级
- 查询出每一个雇员的姓名,工资,部门名称,工资在公司的等级及其领导的姓名,领导的工资,以及领导所相应的等级
- 查询50号部门员工的平均工资,如果平均工资低于5000,则每个员工工资增加1000
- 使用光标查询10部门的员工姓名和工资,并打印__使用光标查询员工姓名和工资,并打印
- 面试题:查询部门最高工资的员工信息
- oracle--查询本部门薪水大于平均工资的员工
- [数据库]关于三个比较典型的数据库试题(1.找到员工表中工资最高的前三名;2.找到员工表中薪水大于本部门平均薪水的员工;3.统计每年入职的员工个数)
- 面试题:查询部门最高工资的员工信息
- 列出与'SCOTT'从事相同工作的所有员工及部门名称、部门人数、平均工资
- 查询各个员工的员工号,员工名及其所在部门的平均工资
- 一句sql 在所有部门中选择平均工资最高的部门所有员工
- Oracle查询各个部门工资小于各个部门平均工资的员工
- 数据库题——高于部门平均工资查询问题
- sql查询员工数>10的部门的所有员工信息(emp.姓名,emp.年龄,enp.部门,gender_info.性别)
- 题目:写出一条SQL语句,查询工资高于10000,且与他所在部门的经理年龄相同的职工姓名。