--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 (job=''MANAGER'' and deptno=10) or (job=''CLERK'' and deptno=20)


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

select * from emp where (job=''MANAGER'' and deptno=10) or (job=''CLERK'' and deptno=20) or (job!=''MANAGER'' and job!=''CLERK'' and sal>=2000)


--7.找出收取傭金的員工的不同工作.

select distinct job from emp where comm>0


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

select * from emp where comm is null or comm<100


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

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

--last_day(date類型參數),返回一個月的最後一天


--10.找出早於12年前受雇的員工.

select * from emp where months_between(sysdate,hiredate)>=144

--months_between(date1,date2),返回兩個日期之間的月份個數


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

select initcap(ename) from emp

--initcap(string),返回首字母大寫的字符串


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

select ename from&
nbsp;emp where length(ename)=5

--length(string),返回字符串的長度


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

select ename from emp where ename not like ''%R%''


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

select substr(ename,1,3) from emp


/**//*substr(string,start,count),截取字符串長度,

start起始位數,count截取的位數,

如果不寫count就是從start開始截取到最後*/


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

select replace(ename,''A'',''a'') from emp


/**//*replace(string,if,then),字符串替換,用then替換if*/


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

select ename,hiredate from emp where months_between(sysdate,hiredate)>=120


--17.顯示員工的詳細資料,按姓名排序.

select * from emp order by ename


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

select ename,hiredate from emp order by hiredate


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

select ename,job,sal from emp order by job desc,sal


--20.顯示所有員工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同則將最早年份的員工排在最前面.

select ename, to_char(hiredate,''yyyy-mm'') from emp order by to_char(hiredate,''mm''),to_char(
hiredate,''yy'')

--to_char(非string,''格式''),按格式把數據轉換成字符類型,格式可以省略


--21.顯示在一個月為30天的情況所有員工的日薪金,忽略余數.

select trunc(sal/30,0) from emp

--no四捨五入


--22.找出在(任何年份的)2月受聘的所有員工。

select * from emp where to_char(hiredate,''mm'')=02


--23.對於每個員工,顯示其加入公司的天數.

select trunc(sysdate-hiredate,0) from emp


--24.顯示姓名字段的任何位置包含"A"的所有員工的姓名.

select ename from emp where ename like ''%A%''


--25.以年月日的方式顯示所有員工的服務年限. (大概)

select to_char(to_date(''0001-01-01'',''yyyy-mm-dd'') + (sysdate-hiredate) - 365 - 31 - 1,''yyyy-mm-dd'') from emp

今天新學的Oracle~~
這是針對scott用戶的emp表做的一些練習