1 选择部门30的所有员工
select *
from emp
where deptno='30'
2 列出所有办事员的姓名,编号和部门编号
select ename,empno,deptno
from emp
where job='CLERK'
3 佣金高于薪金的员工
select *
from emp
where comm>sal
4 佣金高于薪金60%的员工
select *
from emp
where comm>sal*0.6
5 找出部门10所有经理和部门20中所有办事员的详细资料
select *
from emp
where (deptno='10' and job='MANAGER') or ( deptno='20' and job='CLERK')
6 找出部门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)
7 找出收取佣金的员工的不同工作
select distinct job
from emp
where comm is not null
8 找出不收取佣金或者收取佣金低于100的员工
select *
from emp
where comm is null or comm <100
9 找出个月倒数第三天受雇的所有员工
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 *
from emp
order by job desc ,sal
20 显示所有员工的姓名,加入公司年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在前面
select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'mm') month
from emp
order by month,year
21 显示一个月为30天情况的员工的日薪金,忽略余数
select ename round(sal/30)
from emp
22 找出2月受雇所有员工
select *
from emp
where trim(to_char(hiredate,'fm mm')) ='2'
23 显示每个员工加入公司的天数
select ename,round(sysdate-hiredate)
from emp
24 显示名字字段的任何位置包含'A'的所有员工的姓名
select ename
from emp
where ename like '%A%'