Oracle SQL 经典查询练手第一篇

Oracle SQL 经典查询第一篇

本文分享的是Oracle SQL的经典查询第一篇,仅仅是作者自己的见解,如有问题,希望您给出建议或者方法。同时,欢迎广大读者们补充,如果您有经典的查询方式也可以拿出来我们共同分享,共同成长,共同进步。

本计算机上使用的是Oracle 11.2.0版本,使用scott用户登陆。使用的是系统自带的表。

表结构:

describe emp;

 

describe dept;

 

select*from emp;


select*from dept;


----scott用户----

1.列出至少有一个员工的所有部门。

2.列出薪金比“SMITH”多的所有员工。

3.列出所有员工的姓名及其直接上级的姓名。

4.列出受雇日期早于其直接上级的所有员工。

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

6.列出所有“CLERK”(办事员)的姓名及其部门名称。

7.列出最低薪金大于1500的各种工作。

8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

9.列出薪金高于公司平均薪金的所有员工。

10.列出与“SCOTT”从事相同工作的所有员工。

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓薪金。

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

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

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

16.列出各种工作的最低工资。

17.列出各个部门的MANAGER(经理)的最低薪金。

18.列出所有员工的年工资,按年薪从低到高排序。


--1.列出至少有一个员工的所有部门。

select dname from deptwhere deptno in(select deptno from emp);


--2.列出薪金比“SMITH”多的所有员工。

select *from empwhere sal>(select sal from empwhere ename='SMITH');


--3.列出所有员工的姓名及其直接上级的姓名。

select e1.ename employee,e2.ename lead from emp e1,emp e2 where e1.mgr=e2.empno(+);


--4.列出受雇日期早于其直接上级的所有员工。

select *from emp e1where e1.hiredate< (select hiredate from emp e2where e1.mgr=e2.empno);


--5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

select e.*,d.dname from emp e,deptd where e.deptno(+)=d.deptno;


--6.列出所有“CLERK”(办事员)的姓名及其部门名称。

select e.ename,d.dname from emp e,dept d where e.job='CLERK' and e.deptno=d.deptno;


--7.列出最低薪金大于1500的各种工作。

select e2.job from(select min(salminsal,e1.job from emp e1 group byjob)e2 where e2.minsal>1500;


--8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

select e.ename from empe,dept d where e.deptno=d.deptno and d.dname='SALES';


--9.列出薪金高于公司平均薪金的所有员工。

select*from emp ewhere e.sal>(select avg(salfrom emp);


--10.列出与“SCOTT”从事相同工作的所有员工。

select *from emp ewhere e.job=(select e2.job from emp e2where e2.ename='SCOTT');


--11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

select e1.ename,e1.salfrom emp e1where e1.salin(select e2.salfrom emp e2where e2.deptno=30)and e1.deptno<>30;


--12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

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


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

 select deptno,count(ename),avg(sal),avg(sysdate-hiredatefrom emp group by deptno;


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

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


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

 select d.dname,d.deptno,count(enamefrom emp e,dept d where e.deptno(+)=d.deptno groupby d.deptno, d.dname;


 --16.列出各种工作的最低工资。

 select min(sal),job from empgroupby job;


 --17.列出各个部门的MANAGER(经理)的最低薪金。

select deptno,min(salfrom emp where job='MANAGER' groupby deptno;


--18.列出所有员工的年工资,按年薪从低到高排序。

select ename,(sal+nvl(comm,0))*12 yearsal from emp order by yearsal asc;



作者水平有限,难免有错误之处,殷切希望广大读者批评指正。

转载请注明出处http://blog.csdn.net/gcw1024

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值