oracle练习4

1.  列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。(经典的两个表连接)

selecte.ename,d.dname from emp e,dept d where e.deptno=d.deptno and d.dname='SALES';

 

2.  列出薪金高于公司平均薪金的所有员工。(反复查自己)

select ename,salfrom emp where sal>(select avg(sal) from emp);

 

3.  列出与“SCOTT”从事相同工作的所有员工。(排除自己)

select ename,jobfrom emp where ename!='SCOTT' and job=(select job from emp whereename='SCOTT');

 

4.  列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。(max的用法)

select ename,salfrom emp where sal>(select max(sal) from emp where deptno=30);

 

5.  列出在每个部门工作的员工数量、平均工资和平均服务期限。

selectcount(empno) as "员工数量",round(avg(sal),2)"平均工资",trunc(avg(months_between(sysdate,hiredate)))as "服务期限/月" from empgroup by job;

 

6.  列出所有员工的姓名、部门名称和工资.

select e.ename,d.dname,e.salfrom emp e,dept d where e.deptno=d.deptno;

 

7.  列出所有部门的详细信息和部门人数。

selectd.deptno,d.dname,d.loc,count(e.empno) as "部门人数"from dept d,emp e group by d.deptno,d.dname,d.loc

 

8.  找出所有的普通员工

select ename,mgrfrom emp where mgr is not null;

 

9.  求部门中哪些人的薪水最高 

select ename,salfrom emp where sal in(select max(sal) from emp group by deptno);

 

10.        求部门平均薪水的等级  

select t.name as"部门名称",round(t.avgsal,2) as "部门平均薪水",s.grade as "等级" 

from (selectavg(e.sal) as avgsal,d.dname as name from emp e,dept d where e.deptno=d.deptnogroup by d.dname) t,salgrade s

whereround(t.avgsal,2) between losal and hisal;

 

11.        雇员中哪些人是经理人 

select ename,jobfrom emp where job='MANAGER';

 

12.        不准用组函数,求薪水的最高值 

select ename,salfrom (select * from emp order by sal desc) where rownum=1;

 

13.        求平均薪水最高的部门的部门编号 

select t.deptnoas "部门编号",t.sal as "部门最高平均薪水" from

(select d.deptnoas deptno ,round(avg(e.sal),2) as sal

from dept d,empe

whered.deptno=e.deptno

group byd.deptno order by sal desc) t

where rownum=1;

 

14.        求平均薪水最高的部门的部门名字 

select t.dnameas "部门名称",t.sal as "部门最高平均薪水" from

(select d.dnameas dname,round(avg(e.sal),2) as sal

from dept d,empe

whered.deptno=e.deptno

group by d.dnameorder by sal desc) t

where rownum=1;

 

15.        求比普通员工的最高薪水还要高的经理人名称

select ename,sal from emp wheresal>(select max(sal) from emp where job not in('MANAGER','PRESIDENT','ANALYST')) and

job in ('MANAGER','PRESIDENT','ANALYST');

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值