oracle 练习3

1、查找部门30中员工的详细信息。
select * from emp where deptno=30;
2、找出从事clerk工作的员工的编号、姓名、部门号。
select empno, ename, deptno from emp where lower(job)='clerk';
3、检索出奖金多于基本工资的员工信息。
select * from emp where comm>sal;
4、检索出奖金多于基本工资60%的员工信息。
select * from emp where comm>sal*0.2;
5、希望看到10部门的经理或者20部门的职员(clerk)的信息。
select * from emp where (deptno=10 and lower(job)='manager') or (deptno=20 and lower(job)='clerk');
6、找出10部门的经理、20部门的职员或者既不是经理也不是职员但是工资高于2000元的员工信息。
select * from emp where (deptno=10 and lower(job)='manager') or (deptno=20 and lower(job)='clerk') or (lower(job)!='manager' and lower(job)!='clerk' and sal>2000);
7、找出获得奖金的员工的工作。
select distinct job from emp where comm>0;
8、找出奖金少于100或者没有获得奖金的员工的信息。
select * from emp where comm<100 or comm is null;
9、查找员工雇佣日期中当月的最后一天雇佣的。
select * from emp where hiredate=last_day(hiredate);
update emp set hiredate=last_day(hiredate) where lower(ename)='smith';
10、检索出雇佣年限超过12年的员工信息。
select * from emp where months_between(sysdate, hiredate)/12 > 12;
11、找出姓名以A、B、S开始的员工信息。
select * from emp where substr(ename, 0, 1) in ('A','B','S');-- like 'A%' or ename like 'B%' or ename like 'S%';
12、找到名字长度为7个字符的员工信息。
select * from emp where length(ename)=5;
13、名字中不包含R字符的员工信息。
select * from emp where ename not like '%R%';
14、找出员工名字的前3个字符。
select substr(ename, 0, 3) from emp;
15、将名字中A改为a。
select translate(ename, 'A', 'a') from emp;
16、将员工的雇佣日期拖后10年。
select add_months(hiredate, 12*10) from emp;
17、返回员工的详细信息并按姓名排序。
select * from emp order by ename;
18、返回员工的信息并按员工的工作年限降序排列。
select * from emp order by hiredate;
19、返回员工的信息并按工作降序工资升序排列。
select * from emp order by job desc, sal;
20、返回员工的姓名、雇佣年份和月份并且按月份和雇佣日期排序。
select ename, to_char(hiredate, 'yyyy'), to_char(hiredate, 'mm') from emp order by 3, hiredate;
21、计算员工的日薪(按30天)。
select ename, round(sal/30) from emp;
22、找出2月份雇佣的员工。
select * from emp where to_char(hiredate, 'mm')=2;
23、至今为止,员工被雇佣的天数。
select round(sysdate-hiredate) from emp;
24、找出姓名中包含A的员工信息。
like '%A%';
25、计算出员工被雇佣了多少年、多少月、多少日。--x年y月z天?
select ename, round(months_between(sysdate, hiredate)/12), round(months_between(sysdate, hiredate)), round(sysdate-hiredate) from emp;

1、返回拥有员工的部门名、部门号。
select distinct d.dname, d.deptno
from emp e, dept d
where e.deptno=d.deptno
;
2、工资水平多于smith的员工信息。
select *
from emp
where sal>(
      select nvl(sal, 0)
      from emp
      where lower(ename)='smith'
);
3、返回员工和所属经理的姓名。--mgr
select e1.ename, e2.ename
from emp e1, emp e2
where e1.mgr=e2.empno
;
4、返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名。
select e1.ename, e2.ename
from emp e1, emp e2
where e1.mgr=e2.empno and e1.hiredate<e2.hiredate
;
5、返回员工姓名及其所在的部门名称。
select e.ename, d.dname
from emp e, dept d
where e.deptno=d.deptno
;
6、返回从事clerk工作的员工姓名和所在部门名称。
select e.ename, d.dname
from emp e, dept d
where e.deptno=d.deptno and lower(job)='clerk'
;
7、返回部门号及其本部门的最低工资。
select deptno, min(nvl(sal, 0))
from emp
group by deptno
;
8、返回销售部(sales)所有员工的姓名。
select ename
from emp
where deptno=(
      select deptno
      from dept
      where lower(dname)='sales'
);

select e.ename
from emp e, dept d
where e.deptno=d.deptno and d.dname='SALES'
;
9、返回工资水平多于平均工资的员工。
select *
from emp
where sal>(
      select avg(sal)
      from emp
);
10、返回与SCOTT从事相同工作的员工。
select *
from emp
where job=(
      select job
      from emp
      where lower(ename)='scott'
);
11、返回与30部门员工工资水平相同的员工姓名与工资。
select ename, sal
from emp
where sal>(
      select avg(sal)
      from emp
      where deptno=30
);
12、返回工资高于30部门所有员工工资水平的员工信息。
select *
from emp
where sal>(
      select avg(sal)
      from emp
      where deptno=30
);
13、返回部门号、部门名、部门所在位置及其每个部门的员工总数。
select d.deptno, d.dname, d.loc, count(*)
from emp e, dept d
where e.deptno=d.deptno
group by d.deptno, d.dname, d.loc
;
14、返回员工的姓名、所在部门名及其工资。
select e.ename, d.dname, e.sal
from emp e, dept d
where e.deptno=d.deptno
;
15、返回雇员表中不在同一部门但是从事相同工作的员工信息。
select e1.ename, e1.deptno, e1.job, e2.ename, e2.deptno, e2.job
from emp e1, emp e2
where e1.deptno!=e2.deptno and e1.job=e2.job
;
16、返回员工的详细信息。(包括部门名)
select e.*, d.*
from emp e, dept d
where e.deptno=d.deptno
;
17、返回员工工作及其从事此工作的最低工资。
select job, min(sal)
from emp
group by job
;
18、返回不同部门经理的最低工资。
select deptno, min(sal)
from emp
where job='MANAGER'
group by deptno
;
19、计算出员工的年薪,并且以年薪排序。
select sal*12
from emp
order by 1
;
20、返回工资处于第四级别的员工的姓名。
select e.ename, e.sal, s.grade
from emp e, salgrade s
where nvl(e.sal, 0) between s.losal and s.hisal and s.grade=4
;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值