PLSQL练习

---1、列出所有员工的姓名以及其直接上级的姓名
select e.ename,m.ename
from emp e,emp m
where e.empno=m.mgr

---2、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
select empno,ename,dname
from emp,dept
where emp.deptno=dept.deptno

---3、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
select dname ,empno,ename,job,mgr,hiredate,sal,comm
from dept,emp
where emp.deptno(+)=dept.deptno
group by dname,empno,ename,job,mgr,hiredate,sal,comm;

---4、列出所有员工的姓名、部门名称和工资  
select ename,dname,sal
from emp,dept
where emp.deptno=dept.deptno

---5、查出某个员工的上级主管,并要求出这些主管中的薪水超过3000
select e.ename,m.ename manager
from emp e,emp m
where e.mgr=m.empno and m.sal>3000

---6、列出至少有4个员工的部门名称
select dname
from emp,dept
where emp.deptno=dept.deptno
group by dname
having count(empno)>=4;

---7、列出薪金比"SMITH"多的所有员工
select *
from emp
where sal>(select sal from emp where upper(ename)='SMITH');

---8、列出所有从事"CLERK"工作的雇员姓名及其部门名称、部门人数
select ename,dname,ce
from emp,dept,(select dept.deptno, count(empno) ce from emp,dept where emp.deptno=dept.deptno group by dept.deptno) t
where emp.deptno=dept.deptno and job='CLERK'
and emp.deptno=t.deptno 

---9、列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数
select job,count(empno)
from emp
group by job
having min(sal)>1500

---10、列出在部门"sales"(销售部)工作的员工的姓名,假定不知道销售部的部门编号
select ename
from emp
where deptno=(select deptno from dept where upper(dname)=upper('sales'))

---11、列出薪金高于公司平均薪金的雇员姓名、所在部门名称、领导姓名、雇员的工资等级
select e.ename,dname,m.ename,s.grade
from emp e,emp m,dept d,salgrade s
where e.mgr=m.empno and e.deptno=d.deptno
and e.sal between s.losal and s.hisal
and e.sal>(select avg(sal) from emp )

---12、列出与"SMITH"从事相同工作的所有员工及部门名称
select emp.*,dname
from emp,dept
where emp.deptno=dept.deptno
and job=(select job from emp where ename='SMITH')

---13、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金 
select ename,sal
from emp
where sal in(select sal from emp where deptno=30)

---14、列出薪金高于部门30所有员工薪金的员工姓名、薪金及部门名称
select ename,sal
from emp
where sal >all(select sal from emp where deptno=30)

---15、列出在每个部门工作的员工数量、平均工资和平均服务年限 
select count(empno),avg(sal),avg(to_char(sysdate,'yyyy')-to_char(hiredate,'yyyy'))
from emp
group by deptno

---16、列出所有员工的姓名、部门名称和工资
select ename,dname,sal
from emp,dept
where emp.deptno=dept.deptno

---17、列出所有部门的详细信息和部门人数
select dept.deptno,dname,loc,count(empno)
from emp,dept
where emp.deptno=dept.deptno
group by dept.deptno,dname,loc;

---18、列出每种工作的最低工资以及从事此工作的最低工资的雇员姓名
select ename, min(sal)
from emp
group by ename,job;

---19、列出各个部门的经理的最低薪金
select min(m.sal)
from emp e,emp m
where e.mgr=m.empno
group by m.deptno

---20、列出所有员工的年工资,按年薪从低到高排序
select ename,sal*12
from emp 
order by sal*12
---21、查询雇员的领导信息,要求领导的薪水要超过3000
select distinct m.*
from emp e,emp m
where e.mgr=m.empno
and m.sal>3000
---22、求出部门名称中,带'S'字符的部门员工的工资总和 、部门人数
select dname, sum(sal),count(empno)
from emp,dept
where emp.deptno(+)=dept.deptno
and dname in(select dname from dept where dname like '%S%')
group by dname;
 

猜你喜欢

转载自blog.csdn.net/ghhcngc/article/details/81082590