Orcale数据库练习题 男人看了会沉默,女人看了会流泪(中)

–1.取得最后入职的5名员工

select *
from (
select *
from emp
order by hiredate desc
)
where rownum<=5;

在这里插入图片描述

–2取得每个薪水等级有多少员工

select s.grade "工资等级",count(*) "人数"
from  emp e,salgrade s
where sal between s.losal and s.hisal
group by  s.grade

在这里插入图片描述

–3列出所有员工及直接上级的姓名

 -- nvl(null,0)  如果为null 返回0
select e1.ename,nvl(e2.ename,'没有上级')
from emp e1,emp e2
where e1.mgr=e2.empno(+)

在这里插入图片描述

–4列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称

select e.empno, e.ename, d.dname from emp e,emp m ,dept d
where e.hiredate < m.hiredate
and 
e.mgr = m.empno 
and
e.deptno = d.deptno

在这里插入图片描述

–5列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门.

使用右连接 因为要显示的是部门名称(同时列出那些没有员工的部门) 就是现实全部的部门

select d.dname"部门名称" , e.*
from emp e,dept d
where e.deptno(+)=d.deptno

在这里插入图片描述

–6列出至少有一个员工的所有部门

select deptno ,count(ename)
from emp
group by deptno;

在这里插入图片描述

–7列出薪金比"SMITH"多的所有员工信息.

select *
from emp e
where e.sal>
(
select sal
from emp 
where ename='SMITH'
)

在这里插入图片描述

–8 --列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数

select j.job,c.co
from
(select job 
from emp 
group by job
having min(sal)>1500)j
,
(select job, count(*) co
from emp
group by job) c
where j.job=c.job

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/agood_man/article/details/108695465