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(sal) minsal,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(sal) from 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(sal) from emp e2 where e2.deptno=30);
--13.列出在每个部门工作的员工数量、平均工资和平均服务期限。
select deptno,count(ename),avg(sal),avg(sysdate-hiredate) from 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(ename) from 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(sal) from 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