1. 程式人生 > >史上最難oracle資料庫練習題(附答案)

史上最難oracle資料庫練習題(附答案)

oracle資料庫練習題,所有練習資料都來自於安裝oracle資料庫後,自帶的那幾張表,EMP,DEPT等。

部分題目答案已給出,若有異議可以私聊一起探討。

第一題:

統計薪資大於  薪資最高的員工所在部門的平均工資和薪資最低的員工所在部門的平均工資的平均工資的員工資訊。

最終答案: select * from emp where sal >

( select avg (sal) from emp where deptno=(select deptno from emp where sal=(select min(sal) from emp)))

and sal>(select avg (sal) from emp where deptno=(select deptno from emp where sal=(select max(sal) from emp)))

第二題:

統計出 薪資和平均薪資最低的部門中薪資最高的員工的薪資 相差500之內的全部員工的資訊

選做:"最低"換成"處於正中間"

第三題:

查詢部門名稱不是research,職位是manager,且薪資大於平均薪資的員工(包含ename hiredait loc三個欄位)

第四題

找出51號之後入職的並且薪資高於NEW YORK地區的平均薪資的員工的具體資訊(部門資訊代替部門編號)按薪資降序列出  ,第四組的題目

最終答案:select * from emp where (to_char(hiredate,'mmdd') in (select * from (select to_char(hiredate,'mmdd') dd from emp) where dd>501))

and (sal>(select avg(sal) from emp where deptno = (select deptno from dept where loc='NEW YORK'))) order by sal;

51號之後入職的

select * from (select to_char(hiredate,'mmdd') dd from emp) where dd>501

薪資高於BOSTON地區的平均薪資

select avg(sal) from emp where deptno = (select deptno from dept where loc='NEW YORK')

第五題:

查詢各個部門   { 工資小於 【紐約員工平均工資】}{年資大於30}   的員工人數(輸出欄位至少包含   【 loc  |  dname |  人數 】這三個欄位)

第六題:

查詢出入職時間最早的員工所在部門的最高薪資的員工名字,工作職位.工作地點

最終答案:select ename,job,(select loc from dept where deptno=(select deptno from emp where to_char(hiredate,'yyyymmdd') = (select min(to_char(hiredate,'yyyymmdd')) from emp))) from emp e

where e.sal=(select max(sal) from emp where deptno=(select deptno from emp where to_char(hiredate,'yyyymmdd') = (select min(to_char(hiredate,'yyyymmdd')) from emp)));

select * from emp

入職時間最早的員工所在部門的最高薪資

select deptno from emp where to_char(hiredate,'yyyymmdd') = (select min(to_char(hiredate,'yyyymmdd')) from emp)

select max(sal) from emp where deptno=(select deptno from emp where to_char(hiredate,'yyyymmdd') = (select min(to_char(hiredate,'yyyymmdd')) from emp))

第七題:

統計出  薪資位於平均工資最高的部門 平均薪資最低的部門之間 的入職日期最晚的員工的工作城市的所有員工的平均工資

最終答案:select avg(sal) from emp

where deptno in (select deptno from dept where loc=(select loc from dept where deptno=(select deptno from emp where to_char(hiredate,'yyyymmdd') = (select min(to_char(hiredate,'yyyymmdd')) from emp where sal between (select min(avg(sal)) from emp group by deptno) and (select max(avg(sal)) from emp group by deptno)

))))

1.平均工資最高的部門 平均薪資最低的部門

select max(avg(sal)) from emp group by deptno

select min(avg(sal)) from emp group by deptno

2.入職日期最晚的員工

select min(to_char(hiredate,'yyyymmdd')) from emp where sal between (select min(avg(sal)) from emp group by deptno) and (select max(avg(sal)) from emp group by deptno)

3.找出所在城市

select loc from dept where deptno=(select deptno from emp where to_char(hiredate,'yyyymmdd') = (select min(to_char(hiredate,'yyyymmdd')) from emp where sal between (select min(avg(sal)) from emp group by deptno) and (select max(avg(sal)) from emp group by deptno)

))

select deptno from dept where loc=(select loc from dept where deptno=(select deptno from emp where to_char(hiredate,'yyyymmdd') = (select min(to_char(hiredate,'yyyymmdd')) from emp where sal between (select min(avg(sal)) from emp group by deptno) and (select max(avg(sal)) from emp group by deptno)

)))

第八題:

查詢平均工資最高的地區的最早入職的員工