ITPub博客

首页 > 数据库 > Oracle > Oracle入门查询练习题及参考答案

Oracle入门查询练习题及参考答案

原创 Oracle 作者:abraham_dba_2013 时间:2014-02-21 15:33:37 0 删除 编辑
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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-01-13

  • 博文量
    90
  • 访问量
    394556