Oracle入門查詢練習題及參考答案

abraham_dba_2013發表於2014-02-21
1、選擇在部門 30 中員工的所有資訊 
Select * from emp where deptno=30; 


2、列出職位為(MANAGER)的員工的編號,姓名 
Select empno,ename from emp where job ='MANAGER';


3、找出獎金高於工資的員工 
Select * from emp where comm>sal; 


4、找出每個員工獎金和工資的總和 
Select ename,sal+NVL(comm,0) AS Total from emp; 


5、找出部門 10 中的經理(MANAGER)和部門 20 中的普通員工(CLERK) 
Select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK'); 


6、找出部門 10 中既不是經理也不是普通員工,而且工資大於等於 2000 的員工 
Select * from emp where deptno=10 and job not in('MANAGER','CLERK')  and sal>=2000; 


7、找出有獎金的員工的不同工作 
Select distinct job from emp where comm is not null and comm>0;


8、找出沒有獎金或者獎金低於 500 的員工 
Select * from emp where comm<500 or comm is null; 
 
9、顯示僱員姓名,根據其服務年限,將最老的僱員排在最前面 
select ename from emp order by hiredate ; 

10、找出每個月倒數第三天受僱的員工(如:2009-5-29) 
  select * from emp where last_day(hiredate)-2=hiredate; 
  
11、找出 25 年前僱的員工 
  select * from emp where hiredate<=add_months(sysdate,-25*12); 
  
12、所有員工名字前加上 Dear ,並且名字首字母大寫 
  select 'Dear ' || initcap(ename) from emp; 
  
13、找出姓名為 5 個字母的員工 
  select * from emp where length(ename)=5; 
  
14、找出姓名中不帶 R 這個字母的員工 
  select * from emp where ename not like '%R%'; 
  
15、顯示所有員工的姓名的第一個字 
  select substr(ename,0,1) from emp; 
  
16、分組統計各部門下工資>500 的員工的平均工資、 
Select avg(sal) from emp where sal>500 group by deptno ; 
  
17、統計各部門下平均工資大於 500 的部門 
select deptno,avg(sal) from emp group by deptno having avg(sal)>500 ; 
  
18、算出部門 30 中得到最多獎金的員工獎金 
Select max(comm) from emp where deptno = 30 ; 
  
19、算出部門 30 中得到最多獎金的員工姓名 
select ename from emp where comm = (select max(comm) from emp where deptno=30); 
  
20、算出每個職位的員工數和最低工資 
Select job,min(sal),count(*) from emp group by job; 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29439655/viewspace-1085768/,如需轉載,請註明出處,否則將追究法律責任。

相關文章