欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle第六章分组函数习题答案

程序员文章站 2022-07-05 22:46:58
Oracle第六章分组函数习题答案。 练习一 1.查询部门20的员工,每个月的工资总和及平均工资。 select sum(sal) "工资总和",avg(...

Oracle第六章分组函数习题答案。

练习一

1.查询部门20的员工,每个月的工资总和及平均工资。

select sum(sal) "工资总和",avg(sal) "平均工资"

from emp

where deptno=20;

2.查询工作在CHICAGO的员工人数,最高工资及最低工资。

select max(sal) "最高工资",min(sal) "最低工资"

from emp e join dept d on e.DEPTNO=d.DEPTNO

where d.loc = 'CHICAGO'

3.查询员工表中一共有几种岗位类型。

select distinct(job) from emp;

--第六章练习2

1.查询每个部门的部门编号,部门名称,部门人数,最高工资,最低工资,工资总和,平均工资。

select d.deptno,d.dname,count(e.ename),

max(e.sal),min(e.sal),sum(sal),avg(sal)

from dept d join emp e on e.deptno=d.deptno

group by d.deptno,d.dname

--第六章练习2

2.查询每个部门,每个岗位的部门编号 部门名称,岗位名称,部门人数,最高工资,最低工资,工资总和,平均工资。

select d.deptno,d.dname,e.job,count(e.empno),

max(e.sal),min(e.sal),sum(e.sal),avg(e.sal)

from dept d join emp e on e.deptno=d.deptno

group by d.deptno,d.dname,e.job

3.查询每个经理所管理的人数,经理编号,经理姓名,要求包括没有经理的人员信息。

select count(d.ename) "管理的人数", e.empno "经理编号",e.ename "经理姓名"

from emp e ,emp d

where e.empno =d.mgr

or d.mgr is null

group by e.empno,e.ename;

1.查询部门人数大于2的部门编号,部门名称,部门人数

select d.deptno,d.dname,count(e.ename)

from dept d

join emp e on d.deptno=e.deptno

group by d.dname,d.deptno

having(count(e.ename)>2);

2.查询部门平均工资大于2000,且人数大于2的部门编号,部门名称,部门人数,部门平均工资,并按照部门人数升序排序。

select d.deptno,d.dname,count(e.ename),avg(e.sal)

from dept d

join emp e on d.deptno=e.deptno

group by d.dname,d.deptno

having(count(e.ename)>2)

order by count(e.ename) ;

--第六章课后习题

----第六章课后习题1.

? 1.查询部门平均工资在2500元以上的部门名称及平均工资。

select d.dname ,avg(e.sal)

from dept d

join emp e on d.deptno=e.deptno

group by d.dname

having(avg(e.sal)>2500);

----第六章课后习题2

? 2.查询员 岗位中不是以 工岗位中不是以“SA”开头并且平均 资在 工 2500元以上的岗位及平均工资,并按平均工资降序排序。

select e.job,avg(e.sal)

from emp e

where e.job not like 'SA%'

group by e.job

having(avg(e.sal)>2500)

order by avg(e.sal) desc

----第六章课后习题3.

3.查询部门人数在2人以上的部门名称、最低工资、最高工资,并对求得的工资进行四舍五入到整数位。

select d.dname,min(e.sal),round(max(e.sal),0)

from dept d join emp e on d.deptno = e.deptno

having((count(e.ename)>2))

group by d.dname

--第六章课后习题 4

4.查询岗位不为SALESMAN,工资和大于等于2500的岗位及每种岗位的工资和。

select e.job, sum(e.sal)

from emp e

having(e.job not like 'SALEMAN')

group by e.job

--第六章课后习题 5?????

5.显示经理号码和经理姓名,这个经理所管理员工的最低工资,没有经理的KING也要显示,不包括最低工资小于

3000的,按最低工资由高到低排序。

select e.empno,e.ename,min(d.sal)

from emp e left join emp d on d.mgr = e.empno

group by e.empno,e.ename

having(min(d.sal)>=3000)

order by min(d.sal) desc

6.写一个查询,显示每个部门最高工资和最低工资的差额。

select d.deptno,d.dname,max(e.SAL)-min(e.sal)

from dept d

join emp e on d.deptno =e.deptno

group by d.deptno,d.dname;