Oracle基礎 單行函式練習(一)

2021-10-07 16:09:21 字數 3009 閱讀 8112

--1.查詢部門30中的所有員工資訊

select

*from emp where deptno =30;

--2. 列出所有辦事員(clerk)的姓名,編號和部門編號

select ename, empno, deptno from emp where job =

'clerk'

;--3. 找出獎金高於薪金的員工資訊

select

*from emp where comm > sal;

--4. 找出獎金高於薪金的60%的員工資訊

select

*from emp where comm > sal *

0.6;

--5. 找出部門10中所有經理(manager)和部門20中所有辦事員(clerk)的詳細資料

select

*from emp

where

(deptno =

10and job =

'manager')or

(deptno =

20and job =

'clerk');

--6. 找出部門10中所有經理(manager),部門20中的所有辦事員(clerk), 既不是經理又不是辦事員但薪金大於或等於2000的所有員工的詳細資料

select

*from emp

where

(deptno =

10and job =

'manager')or

(deptno =

20and job =

'clerk')or

(sal >=

2000

and job notin(

'clerk'

,'manager'))

;--7. 找出員工可以獲取到獎金的工作

select

distinct job from emp where nvl(comm,0)

>0;

--8. 找出不收取或收取獎金低於100的員工資訊

select

*from emp where nvl(comm,0)

<

100;

--9. 找出各月倒數第3天受僱的所有員工資訊

select

*from emp where hiredate = last_day(hiredate)-2

;--10. 找出早於12年前受僱的員工資訊

select

*from emp where months_between(sysdate, hiredate)/12

>12;

--11. 以首字母大寫的方式顯示所有員工的姓名

select initcap(ename)

from emp;

--12. 顯示正好為5個字元的員工的姓名

select ename from emp where length(ename)=5

;--13. 顯示不帶有"r"的員工的姓名

select ename from emp where ename not

like

'%r%'

;--14. 顯示所有員工的姓名的前三個字元

select substr(ename,1,

3)from emp;

--15. 顯示所有員工的姓名,用"a"代替所有的"a"

select

replace

(ename,

'a',

'a')

from emp;

--16. 顯示滿10年服務年限的員工的姓名和受僱日期

select ename, hiredate

from emp

where months_between(sysdate, hiredate)/12

>=10;

--17. 顯示員工詳細資訊,按姓名排公升序

select

*from emp order

by ename asc

;--18. 顯示員工的姓名和受僱日期,根據其服務年限,將最老的員工排在前面

select ename, hiredate from emp order

by hiredate asc

;--19. 顯示所有員工的姓名,工作和薪金,按工作的降序排序,若工作相同則薪金公升序排序

select ename, job, sal from emp order

by job desc

, sal asc

;--20. 顯示所有員工的姓名,加入公司的年份和月份,按受僱日期所在月排序,若月份相同則將最早年份的員工排在前面(要求使用extract函式)

select ename,

extract(

year

from hiredate) years,

extract(

month

from hiredate) mon

from emp

order

by mon asc

, years asc

;--21. 顯示在乙個月為30天的情況,所有員工的名字和日薪金,忽略餘數

select ename, trunc(nvl(sal,0)

/30)from emp;

--22.(以下emp表)找出在(任何年份的)2月受僱的所有員工資訊

select

*from emp where to_char(hiredate,

'mm')=

'02'

;--23. 對於每個員工,顯示名字和其加入公司的天數,保留2位小數(四捨五入)

select ename,

round

(sysdate - hiredate,

2) days from emp;

--24. 顯示姓名欄位的任何位置包含"a"的所有員工的姓名

select ename from emp where ename like

'%a%'

;

Oracle基礎 單行函式練習(二)

1.查詢系統當前日期 select sysdate from dual 2.請查詢每個員工的名字 薪水和加薪15.5 之後的薪水 trunc取整 select last name,salary,trunc salary 1.155 new salary from employees 3.顯示員工加薪...

oracle強化練習之單行函式

1.顯示dname和loc中間用 分隔 select dname loc from dept 2.將部門名稱左填充為10位 select lpad dname,10 from dept 3.將員工名字的 s 替換為 s select replace ename,s s from emp 4.求員工名...

oracle單行函式練習題

1.顯示系統時間 注 日期 時間 select to char sysdate,yyyy mm dd hh mm ss from dual 2.查詢員工號,姓名,工資,以及工資提高百分之20 後的結果 new salary select empno,ename,sal,sal 1.2 as new ...