Oracle之再展身手 练习题2(多表)

文章目录

准备

  • 一颗强大的心
  • 工具:连接了oracle的SQL developer
  • 环境:Oracle的Scott用户

问题

1、列出所有雇员的姓名及直接上级的姓名

select e.ename ename,m.ename mname from emp e join emp m on e.mgr=m.empno;

在这里插入图片描述

2、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门

select d.deptno,e.* from dept d left outer join emp e on e.deptno=d.deptno;

在这里插入图片描述
3、所有部门在NEW YORK的员工姓名
子查询法

select ename from emp where deptno=
		(select deptno from dept where loc='NEW YORK');

在这里插入图片描述
内连接法

select ename from dept d inner join emp e 
					on e.deptno=d.deptno where loc='NEW YORK';

在这里插入图片描述
4、员工SMITH的姓名,部门名称

select e.ename,d.dname from emp e inner join dept d 
	on e.deptno=d.deptno where ename='SMITH';

在这里插入图片描述
5、员工姓名、部门名称、工资、工资级别,工资级别大于4级

select e.ename,d.dname,e.sal,s.grade from emp e inner join dept d 
		on e.deptno=d.deptno 
			left outer join salgrade s 
				on e.sal between s.losal and s.hisal 
		where s.grade>4;

在这里插入图片描述
6、King 和 FORD管理的员工姓名及其经理姓名

select m.ename,e.ename from emp e join emp m 
	on e.mgr=m.empno where m.ename in('KING','FORD');

在这里插入图片描述
7、员工名,参加工作时间,经理名,参加工作时间

select e.ename,e.hiredate,m.ename,m.hiredate from emp e join emp m
	 on e.mgr=m.empno where e.hiredate<m.hiredate;

在这里插入图片描述
8、 部门名称中,带S字符的部门员工的工资总和,部门人数

select sum(sal),count(*)
from emp e where e.deptno in
	(select d.deptno from dept d where d.dname like '%S%')
group by e.deptno;

在这里插入图片描述
9、所有员工的年工资,按年薪从低到高排序

select e.*,sal+nvl(comm,0)*12 nx from emp e order by  nx;

在这里插入图片描述

10、 各种工作的最低工资以及从事此工作的雇员姓名

select e.ename,e.sal,e.job
from emp e,(select min(sal) losal,job from emp group by job) m
where e.sal=m.losal and e.job=m.job;

在这里插入图片描述
11、所有部门的详细信息和部门人数

select d.*,sump
from dept d left outer join
(select count(*) sump,deptno from emp group by deptno)m
on d.deptno=m.deptno;

在这里插入图片描述
12、列出所有员工的姓名、部门名称、工资

select e.ename,d.dname,e.sal from emp e join dept d on e.deptno=d.deptno;

在这里插入图片描述
13、所有员工的姓名,老板名字

select ename,(select ename from emp where mgr is null) boss
from emp;

在这里插入图片描述
14、每个雇员的编号、姓名、工资、部门名称、工资等级

select e.empno,e.ename,e.sal,d.dname,s.grade 
from emp e inner join dept d on e.deptno=d.deptno 
inner join salgrade s on e.sal between s.losal and s.hisal;

在这里插入图片描述
15、按职位分组,求每个职位的最高工资、最低工资及平均工资

select max(sal),min(sal),floor(avg(sal)) from emp  group by job;

在这里插入图片描述
16、统计平均工资大于2000的部门详情

select * from dept d where d.deptno in
	(select deptno from emp group by deptno having avg(sal)>2000)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值