oracle练习题(mldn视频)一

1,列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数。
select job,count(empno) from emp
where job in(select job from emp group by job having min(sal)>1500)
group by job;
2,列出薪金高于公司平均薪金的所有员工所在部门,上级领导,公司的工资等级。
select e.ename,d.dname,m.ename,e.sal,sa.grade
from emp e,emp m,dept d,(select avg(sal) avg from emp) ed,salgrade sa
where e.mgr=m.empno(+) and e.deptno=d.deptno and e.sal >ed.avg and (e.sal between losal and hisal);
3,列出与scott从事相同工作的所有员工及部门名称。
select e.ename,d.dname from emp e,dept d,(select job from emp where ename='SCOTT') ed
where e.job=ed.job and e.deptno=d.deptno and ename!='SCOTT';
4,列出所有部门的详细信息和部门人数。
select d.*,nvl(ed.cou,0)
from dept d,(select deptno,count(empno) cou from emp group by deptno) ed
where d.deptno=ed.deptno(+);
5,列出各种工作的最低工资及从事此工作的雇员姓名(未能将相同工资的人排除)。
select e.ename,e.job,e.sal
from emp e,(select min(sal) min from emp group by job) ed
where e.sal=ed.min;
6,列出各个部门的manager(经理)的最低薪金(查询出的是各个部门的经理的工资,因为每个部门只有一个经理)。
select deptno,min(sal) from emp where job='MANAGER' group by deptno;
7,列出所有员工的年工资,按年薪从低到高的顺序排序。
select ename,((sal+nvl(comm,0))*12) sa from emp order by sa asc;
8,查出每个员工的上级主管,并要求出这些主管中的薪水超过3000的。
select distinct m.ename,m.sal
from emp e,emp m
where e.mgr=m.empno and m.sal>3000;
9,求出部门名称中带'S'字符的部门员工的工资合计,部门人数。
select distinct e.deptno,d.dname,ed.sum,ed.cou
from emp e,dept d,
(select deptno,sum(sal) sum,count(empno) cou from emp group by deptno) ed
where d.dname like '%S%' and e.deptno=ed.deptno and e.deptno=d.deptno;
10,给任职日期超过29年的人加薪10%。
update emp set sal=sal*1.1 where (sysdate-hiredate)/365>29;(更新数据)
select ename,sal*(1+0.1) salh from emp where (sysdate-hiredate)/365>29;(仅仅是查询加薪后数据)
11,列出在部门"SALES"(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
select e.ename
from emp e,dept d
where d.dname='SALES' and e.deptno=d.deptno;
12,列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
select ename,sal,deptno from emp where sal in (select sal from emp where deptno=30) and deptno!=30;
13,列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金部门名称。
select e.ename,e.sal,d.dname from emp e,dept d where e.sal >all (select sal from emp where deptno=30)
and e.deptno=d.deptno;
14,列出在每个部门工作的员工数量,平均工资和平均服务期限。
select deptno,count(empno),avg(sal),avg((sysdate-hiredate)/365) from emp group by deptno;
15,列出所有员工的姓名,部门名称和工资。
select e.ename,d.dname,e.sal from emp e,dept d where e.deptno(+)=d.deptno;
16,列出所有"CLERK"(办事员)的姓名及部门名称,部门的人数。
select e.ename,d.dname,ed.cou from emp e,dept d,
(select deptno,count(empno) cou from emp group by deptno) ed
where e.job='CLERK' and e.deptno=ed.deptno and e.deptno=d.deptno;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值