08Oracle笔记(八)复杂查询及总结

08Oracle笔记(八)复杂查询及总结

ID:41927800

大小:141.50 KB

页数:14页

时间:2019-09-04

08Oracle笔记(八)复杂查询及总结_第1页
08Oracle笔记(八)复杂查询及总结_第2页
08Oracle笔记(八)复杂查询及总结_第3页
08Oracle笔记(八)复杂查询及总结_第4页
08Oracle笔记(八)复杂查询及总结_第5页
资源描述:

《08Oracle笔记(八)复杂查询及总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Oracle笔记(八)复杂查询及总结一、复杂查询1、列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。1、确定所需要的数据表:•emp表:可以查询出员工的数量;•dept表:部门名称;•emp表:统计信息;2、确定已知的关联字段:•emp.deptno=dept.deptno;第一步:找出至少有一个员工的部门编号SELECTdeptno,COUNT(empno)FROMempGROUPBYdeptnoHAVINGCOUNT(empno)>1;第二步:找到部门名称

2、,肯定使用部门表,因为现在的数据量较小,所以可以将之前的emp表和dept表两个进行连接,统一采用多字段分组的方式查询;SELECTd.deptno,d.dname,COUNT(c.empno)FROMempc,deptdWHEREe.deptno-d.deptno(+)GROUPBYd.deptno,d.dnameHAVINGCOUNT(e.empno)>1;第三步:依然需要继续统计SELECTd.deptno,d.dname,COUNT(e.empno),AVG(sal),MIN(sal),MA

3、X(sal)FROMempe,deptdWHEREe.deptno=d.deptno(+)GROUPBYd.deptno,d.dnameHAVINGCOUNT(c.empno)>1;2、歹U出薪金比"SMITH"或"ALLEN〃多的所有员工的编号、姓名、部门名称、其领导姓名。1、确定所需要的数据表:•emp表:查询出"SMITH"或"ALLEN"工资;•emp表:最终的显示需要编号、姓名;•emp表:领导的姓名,自身关联;•dept表:部门名称;2、确定已知的关联字段:•雇员和领导:emp.mgr=

4、memp.empno;•雇员和部门:emp.deptno二dept,deptno;第一步:找出"SMITH"或"ALLEN"的工资SELECTsalFROMempWHEREenameIN('SMITH'ALLEN');第二步:以上的查询返回的多行单列的记录,按照子查询的要求在WHERE子句中写合适,所以这个时候将上面的杳询作为一个了杳询出现,继续查询符合此要求的员工的编号、姓名。SELECTe.empno,e.enameFROMempeWHEREe.sal>ALL(SELECTsalFROMempW

5、HEREenameIN('SM1TH,,'ALLEN,));第三步:查询出部门的名称,引入部门表,同时增加消除笛卡尔积的条件SELECTc.cmpno,c.cnamc,d.dnamcFROMempc,deptdWHEREc.sal>ALL(SELECTsalFROMempWHEREenameIN('SMITH'ALLEN'))ANDe.deptno=d.deptno;第四步:领导的信息需要emp表自身关联生SELECTe.empno,e.ename,d.dname,m.enameFROMempe,d

6、eptd,empmWHEREe.sal>ALL(SELECTsalFROMempWHEREenameIN('SMITH,,'ALLEN'))ANDe.deptno=d.deptnoANDe.mgr=m.empno(9;3、列岀所有员工的编号、姓名及其直接上级的编号、姓名,显示的结果按领导年工资的降序排列。1>确定所需耍的数据衣:•emp表:员工的编号、姓名;•emp表:领导的编号、姓名、计算年薪;2、确定已知的关联字段:emp.mgr=memp.empno;SELECTe.empno,e.ename

7、,m.empno,m.ename,(m.sal+NVL(m.comm,0))*12incomeFROMempe,empmWHEREe.mgr=m.empno()ORDERBYincomeDESC;4、列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。1、确定所需要的数据表:•emp表:雇员的编号、姓名;•emp表:求出领导的工作日期;•dept表:部门名称、位置;•emp表:统计部门人数;2、确定已知的关联字段:•雇员和部门:emp.deptno=dept.deptno

8、;•雇员和领导:emp.mgr=memp.empno;第一步:列出受雇日期早于其直接上级的所有员工的编号、姓名一一□身关联emp表。SELECTe.empno,e.enameFROMempe,empmWHEREe.mgr=m.empno(+)ANDe.hiredate

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。