欢迎投稿

今日深度:

OracleSQL经典查询练手第一篇

OracleSQL经典查询练手第一篇


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;

\

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

www.htsjk.Com true http://www.htsjk.com/oracle/23998.html NewsArticle OracleSQL经典查询练手第一篇 Oracle SQL 经典查询第一篇 本文分享的是Oracle SQL的经典查询第一篇,仅仅是作者自己的见解,如有问题,希望您给出建议或者方法。同时,欢迎广大读者们补...
评论暂时关闭