1、找出佣金不高於薪金的60%的員工。
select ename from emp where nvl(comm ,0)<= 0.6*(sal+nvl(comm,0));
2、找出部門10中所有經理(manager),部門20中所有辦事員(clerk),既不是經理又不是辦事員但其薪金大於或等於2000的所有員工的詳細資料。
select * from emp where
(job=『manager』 and deptno=10)
or (job=『clerk』 and deptno=20)
or ((job not in(『manager』,『clerk』))and(sal+nvl(comm,0))>=2000);
3.收到佣金高於基本工資20%的員工的不同工作
select distinct( job) from emp where comm>0.2*sal;
4、找出各月第一天受僱的所有員工。
select ename from emp where hiredate=trunc(hiredate,『mm』);
select * from emp where to_char(hiredate,『dd』)=『01』;
5、找出早於10年前受僱的員工。
select ename from emp where months_between(sysdate,hiredate)/12>10;
6、以首字母大寫的方式顯示所有員工的姓名。
select initcap(ename) from emp;
7、顯示小於5個字元的員工的姓名。
select ename from emp where length(ename)<5; not like 『_____%』
8、顯示不帶有「k」的員工的姓名。
select ename from emp where ename not like』%k%』;
9、顯示所有員工姓名的後三個字元。
select substr(ename,-3) from emp;
10、顯示所有員工的姓名,用「a」替換所有「a」
select replace(ename,『a』,『a』) from emp;
11、顯示滿10年服務年限的員工的姓名和受僱日期。
select ename,hiredate from emp where months_between(sysdate,hiredate)/12>=10;
12、顯示員工的姓名和受僱日期,根據其服務年限,將最老的員工排在最前面。
select ename,hiredate from emp order by (sysdate-hiredate) desc;
13、顯示所有員工的姓名、加入公司的年份和月份,按受僱日期所在月排序,若月份相同則將最早年份的員工排在最前面。
select ename,to_char(hiredate,『yyyy-mm』) from
emp order by to_char(hiredate,『mm』), to_char(hiredate,『yyyy』) desc ;
14、找出在(任何年份的)2月受聘的所有員工。
select ename from emp where to_char(hiredate,『mm』)=『02』;
15、顯示姓名欄位的任何位置包含「a」的所有員工的姓名.
select ename from emp where ename like 『%a%』 ;
16、查詢下服務年限在30年和35年之間的所有員工資訊
select * from emp where months_between(sysdate,hiredate)/12between 30 and 35;
17、顯示名字中包含a,並且姓名長度不高於5的所有員工的不同職位資訊
select distinct(job) from emp where ename like 『%a%』 and length(ename)<=5;
18、列出所有員工的年工資,按年薪從低到高排序。
select (sal+nvl(comm,0))*12 年薪 from emp order by 年薪 asc; nvl2(comm,sal+comm,sal)*12;
19、按照工資進行等級劃分
工資範圍在(0-999)等級為l1;
工資範圍在(1000-2999)等級為l2;
工資範圍在(3000以上的)等級為l3;
根據上面的等級劃分,查詢出每個員工的員工編號,姓名,職位,和工資等級,並按照工資進行排序。
select empno,ename,job,sal,
decode(trunc(sal/1000)+1,1,『l1』,2,『l2』,3,『l2』,『l3』)
from emp order by sal;
select empno,ename,job,case
when sal<1000 then 『l1』
when sal>=3000 then 『l3』
else 『l2』
end 工資等級
from emp order by sal;
select empno,ename,job,case
when trunc(sal/1000)=0 then 『l1』
when trunc(sal/3000)=0 then 『l2』
else 『l3』
end 工資等級
from emp; case 先後順序執行。
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 ...
函式練習題
1.打字軟體的正確率 編寫函式,計算字串匹配的準確率,類似於打字軟體 orginstr為原始內容,userstr為使用者輸入內容 2.模擬輪盤 遊戲 轉盤分為三部分 一等獎 二等獎和三等獎 輪盤轉的時候是隨機的,如果範圍在 0,0.08 之間,代表一等獎 如果範圍在 0.08,0.3 之間,代表二等...
SQL趣味練習題
第一中情況 create table renwu name varchar 20 not null,fahter varchar 20 insert into renwu values 小甲 大甲 insert into renwu values 大甲 老甲 insert into renwu na...