1、查询部门30中的所有员工的全部信息。
Select * From emp Where deptno=30;
2、查询所有办事员(CLERK)的姓名,编号和部门编号。
Select ename,empno,deptno From emp Where job='CLERK';
3、查询补助高于薪金的员工的全部信息。
Select * From emp Where nvl(comm,0) > sal;
4、查询补助高于薪金的60%的员工的全部信息。
Select *From emp Where nvl(comm,0) > (sal*0.6);
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的所有员工的详细资料。
理解1:查询部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),以及公司内哪些既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料。
Select * From emp Where (deptno=10 And job='MANAGER') Or (deptno=20 And job='CLERK') Or (job Not In ('MANAGER','CLERK') And sal>=2000);
理解2:查询部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),以及10、20号部门内 既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料。
Select * From emp Where (deptno=10 And job='MANAGER') Or (deptno=20 And job='CLERK') Or (job Not In ('MANAGER','CLERK') And sal>=2000 And deptno In (10,20));
7、查询收取补助的员工的不同工作。
Select ename,job,comm From emp Where nvl(comm,0) > 0;
8、查询不收取佣金或收取的补助小于100的员工。
Select * From emp Where nvl(comm,0) <100;
9、查询各月倒数第3天受雇的所有员工。
Select * From emp Where (last_day(hiredate) - hiredate) = 2;
10、查询早于12年前受雇的员工。
Select * From emp Where to_char(Sysdate,'yyyy') - to_char(hiredate,'yyyy') >= 12;
11、查询首字母大写的方式显示所有员工的姓名。
Select ename,Initcap(ename) From emp;
12、查询正好为5个字符的员工的姓名。
Select ename From emp Where Length(ename)=5;
13、查询不带有“R”的员工的姓名。
做法1:Select ename From emp Where ename Not Like '%R%';
做法2:Select ename From emp Where Instr(ename,'R')=0;
14、查询所有员工姓名的前三个字符。
Select ename, Substr(ename,1,3) From emp;
15、查询所有员工的姓名,用“a”替换所有“A”
Select ename,Replace(ename,'A','a') From emp;
16、查询满10年服务年限的员工的姓名和受雇日期。
方法1:如果不考虑到闰年平年的话,10*365可以代表10年。
Select ename, hiredate From emp Where (Sysdate-hiredate)>=10*365;
方法2:如果考虑到闰年平年,10*365是不满足10年的要求。
如果服务年限满10年,那排除月日,sysdate和hiredate在年份上肯定也是>=10
Select ename, hiredate From emp Where (to_char(Sysdate,'yyyy') - to_char(hiredate,'yyyy')) >= 10;
17、查询员工的详细资料,按姓名排序。
Select * From emp Order By ename;
18、查询员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面。
Select ename, hiredate From emp Order By hiredate Desc;
19、查询所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序。
Select ename,job,sal From emp Order By job Desc,sal Desc;
20、查询所有员工的姓名,加入公司的年份和月份,按受雇日期所在月份排序,若月份相同则将最早年份的员工排在最前面。
Select ename,to_char(hiredate,'yyyy'),to_char(hiredate,'mm') From emp Order By to_char(hiredate,'mm'),to_char(hiredate,'yyyy');
21、查询在一个月尾30天的情况所有员工的日薪金,忽略余数。
Select ename,Trunc(sal/30) From emp;
22、查询在(任何年份的)2月受聘的所有员工。
Select * From emp Where to_char(hiredate,'mm')=2;
23、查询每个员工加入公司的天数。
Select ename,(Sysdate-hiredate) From emp;
24、查询姓名字段的任何位置包含“A”的所有员工的姓名。
Select ename From emp Where ename Like '%A%';
25、查询以年月日的方式显示所有员工的服务年限。(大概)
Select ename,sysdate,hiredate,Round(sysdate-hiredate) 天数,
Nvl(Trunc((sysdate-hiredate)/365),0)||'年'||
Nvl(Trunc((Mod((sysdate-hiredate),365))/30),0)||'月'||
Nvl(Round(Mod((Mod((sysdate-hiredate),365)),30)),0)||'日' 年月日 From emp;
作者:kerwin_chyl
文章链接:https://www.jianshu.com/u/66bf7abdc5a8
本文版权归作者和简书共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。