Oracle練習題

Oracle練習題             

姓名: __________     分數: _______

1. 構造SQL語句,列出在1981年入職的員工的姓名、入職時間和月收入(薪水和獎金之和),並將入職時間顯示爲:1981年10月10日這種形式,月收入顯示爲$12,345.67這種形式。

select to_char(hiredate'yyyy'ename,

to_char(hiredate'yyyy') || '' || to_char(hiredate'mm') || '' ||

       to_char(hiredate'dd') || '',

       to_char(sal + nvl(comm0), '$9,999,999.99')

  from emp

 where to_char(hiredate'yyyy') = '1982'

2. 列出職員表中員工的姓名、薪水、所屬部門名稱和薪水等級,並按照薪水由高到低排序。

select ename, sal, dname, grade

  from emp a, dept b, salgrade c

 where a.deptno = b.deptno

   and c.losal < a.sal

   and c.hisal > a.sal

   order by 2;

3. 列出每個員工的名字(別名爲EMPLOYEE)及他們的直接領導的名字(別名爲MANAGER),如果某些員工沒有領導,則在其領導的位置上顯示“boss”。

select ename, nvl((select ename from emp b where a.mgr = b.empno), 'BOSS')

  from emp a;

4. 查詢哪些職位的薪水總和大於5000元,列出這些職位和其薪水總和,並按薪水總和升值排序。  

select job, sum(sal)

  from emp a

 group by a.job

having sum(sal) > 5000

 order by sum(sal)

5. 查詢哪個部門的平均薪水比20部門的平均薪水低,列出這些部門的編號和平均薪水值。

select deptno, avg(sal)

  from emp a

 group by a.deptno

having avg(sal) < (select avg(sal)

                     from emp a

                    group by a.deptno

                   having deptno = '20');

6. 查詢機構中薪水最低的五名員工,列出員工姓名和薪水值。

select * 

from (select ename, sal from emp order by sal) 

where rownum < 6

7. 按薪水從高到低排序,列出第5位到第8位員工的姓名、薪水和職位。

select e.*

  from (select rownum rn, ename, sal

          from (select * from emp order by sal desc)

         where rownum < 9) e

 where e.rn > 4

8. 列出部門名稱和該部門的員工信息,同時列出那些沒有員工的部門。

9. 列出最低薪金大於1500的各種工作。

select distinct job from emp where sal > 1500;

10. 查詢出薪水比本部門平均薪水高的員工信息。

select *

  from emp a

 where sal > (select avg(sal)

                from emp b

               group by deptno

              having a.deptno = b.deptno)

11. 列出所有管理者的最低薪金。

select min(sal)

  from (select * from emp where empno in (select mgr from emp))

發佈了16 篇原創文章 · 獲贊 16 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章