oracle学习篇三:SQL查询


select * from emp;

 

--1.找出部门30的员工
select * from emp where deptno = 30;

 

--2.列出所有办事员(CLERK)的姓名,变化和部门编号
select * from emp where job = upper('clerk');

 

--3.找出佣金高于薪金的员工。
select * from emp where comm > sal;

 

--4.找出佣金高于薪金60%的员工。
select *
from emp
where comm > sal * 0.6

 

--5.找出部门10中所有的经理(MANAGER)和部门20中所有的办事员(CLERK)的详细资料
select *
from emp
where (deptno = 10 and job = upper('manager'))
or (deptno = 20 and job = upper('clerk'));

 


--6.找出部门10中所有的经理(MANAGER)和部门20中所有的办事员(CLERK)的详细资料,既不是经理又不是办事员,但薪资大于等于2000的所有员工地详细信息
select *
from emp
where (deptno = 10 and job = upper('manager'))
or (deptno = 20 and job = upper('clerk'))
or (job not in ('MANAGER', 'CLERK') and sal >= 2000);

 

 

--7.找出收取佣金的员工地不同工作
select distinct job from emp where comm is not null;

 

--8.找出不收取佣金或收取佣金低于100的员工.
select *
from emp
where comm is null
or comm < 100;

 

--9.找出各个月倒数第3天受雇的员工
select LAST_DAY(HIREDATE)
from emp
select * from emp where LAST_DAY(HIREDATE) - 2 = HIREDATE;

 


--10.找出早于12年前受雇的员工.
select * from emp where months_between(sysdate, hiredate) / 12 > 12;

 

--11.以首字母大写的方式显示所有员工姓名
select initcap(ename) from emp;

 

--12.显示正好为5个字符的员工姓名.
select * from emp where length(ename) = 5;

 

--13.显示不带“R”的员工姓名.
select * from emp where ename not like '%R%';

 

--14.显示所有员工共姓名前三个字符.
select substr(ename, 0, 3) from emp;

 

--15.显示所有员工,用“a"替换"A"
select replace(ename, 'A', 'a') from emp;

 

--16.显示满10年的员工姓名和授雇日期
select ename, hiredate
from emp
where months_between(sysdate, hiredate) / 12 > 10;

 

--17.显示员工的详细资料,按姓名排序
select * from emp order by ename;

 

--18.显示员工姓名和授雇日期,根据其服务年限,将最老的员工牌在最前面
select ename, hiredate from emp order by hiredate;

 

--19.显示所有员工的姓名/工作和薪资,按工作的降序排序,若共工作相同则按薪资排序
select ename, job, sal from emp order by job desc, sal;

 

--20.显示所有员工的姓名/加入公司的年份和月份,安排受雇日前所作的月排序,若月份相同则将最早年份的员工排在最前面。
select ename, to_char(hiredate, 'yyyy') y, to_char(hiredate, 'mm') m
from emp
order by m, y;

 

--21.显示在一个月为30天的情况,所有员工日薪资,忽略余数。
select ename, round(sal / 30) from emp;

 

--22.找出在(任何年份的)2月份受雇的员工。
select * from emp where to_char(hiredate, 'mm') = '02';

 

--23.对于每个员工显示其加入公司的天数。
select ename, trunc(sysdate - hiredate) from emp;

 

--24.显示姓名字段的任何位置包含“A”的所有员工地姓名。
select ename from emp where ename like '%A%';

 

--25.以年月日的方式显示所有员工的服务年限(大概)
select ename,
hiredate,
trunc(months_between(sysdate, hiredate) / 12) y,
trunc(mod(months_between(sysdate, hiredate), 12)) m,
trunc(mod(sysdate - hiredate, 30)) d
from emp;

 

 

posted @ 2016-06-19 13:23  陈小兵  阅读(254)  评论(0编辑  收藏  举报