Orcale資料庫練習題 男人看了會沉默,女人看了會流淚(中)

2020-09-21 19:00:24

–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

在這裡插入圖片描述