-- 1.選擇部門30的所有員工
select * from emp where deptno=30;
-- 2.列出所有辦事員(CLERK)的姓名,員工編號和部門編號
select * from emp where job='CLERK';
-- 3.找出佣金高於薪金的員工
select * from emp where comm>sal;
-- 4、找出佣金高於薪金60%的員工
select * from emp where (comm*10/6)>sal;
-- 5.找出部門10中的所有經理(MANAGER)和部門20的所有辦事員(CLERK)的詳細資料
select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');
-- 6.找出部門10的所有經理(MANAGER),部門20中所有辦事員(CLERK),既不是辦事員也不是經理但是薪金大於2000的所有員工的詳細資料
select * from emp where ((deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK'))or(job<>'MANAGER' and job<>'CLERK' and sal>2000);
-- 7、找出收取佣金的員工的員工的不同工作
select distinct job from emp where comm is not null and comm<>0;
-- 8.找出不取佣金或者是收取佣金小於100的員工詳細資訊
select * from emp where comm is null or comm<100;
-- 9.找出各月的倒數第三天受僱傭的員工 *
-- 每個員工的僱傭時間是不一樣的,所有需要找出每個員工僱傭的時間所在月份的最後一天,之後按照‘日期-數字’的方式求出前三天的日期,這個日期必須和僱傭日期相符才能滿足條件
-- SELECT last_day( '1981-09-28' ); 獲取月份最後一天
-- SELECT EXTRACT(DAY FROM Now());提取當前時間的日
select * from emp where extract(DAY FROM last_day(hiredate))-3<=extract(DAY FROM (hiredate));
-- 10.找出早於12年前受僱的員工
select * from emp where extract(year from now())-12 >extract(year from hiredate);
-- 11.以首字母大寫的方式顯示員工姓名
-- concat(,) 拼接字串 upper() 大寫 lower()小寫 left(,1) 左邊擷取一個 substr(,2)從左邊第2個往後擷取
select concat(upper(left(ename,1)),lower(substr(ename,2))) from emp;
-- 12顯示姓名正好為5個長度的所有員工
select * from emp where length(ename)=5;
-- 13.顯示帶有'R'的員工的詳細
select * from emp where ename like '%R%';
-- 14、顯示員工姓名的前三個字元
select ename '全名', left(ename,3) '前三個字元' from emp;
-- 15、顯示所有員工的姓名,用‘a’替換所有的'A'
select ename '全名', replace(ename,'A','a') as '大A替換為小a' from emp;
-- 16.列出滿10年僱傭期限的員工的詳細資訊
select * from emp where extract(year from now())-10>extract(year from hiredate);
-- 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 sal asc;
-- 20、顯示所有員工的姓名、加入公司的年份和月份、按接受所在僱傭月排序,若月的相同則按最早年份的員工排在最前面
-- 本程式需要求出所僱的日期的年份和月份,然後再來顯示
select ename as '姓名',year(hiredate) as '年份',month(hiredate) as '月份' from emp order by month(hiredate) asc,year(hiredate) asc;
-- 21.顯示一個月為30天的情況下,所有員工的日薪,忽略餘數
select ename '姓名',sal '月薪',truncate(sal/30,0) '日薪' from emp;
-- 22.找出在(任何年份的)2月受僱的員工
select * from emp where month(hiredate)=2;
-- 23.對於每個員工顯示其來到公司的天數
select ename as '姓名', to_days(now())-to_days(hiredate) as '來公司的天數' from emp;
-- 24、顯示姓名欄位的任何位置包含有’A‘的員工
select * from emp where ename like '%A%';