编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> 数据库 -> Oracle之复杂查询 -> 正文阅读
 

[数据库]Oracle之复杂查询[第1页]

实例1:列出薪资高于在部门30工作的所有员工的薪资的员工姓名和薪资,部门名称,部门人数。
-emp 表:姓名,薪资,部门人数;
-dept 表:部门名称;
第一步:找出30部门的所有雇员的工资,返回多行单列;

select sal from emp where deptno=30

第二步:返回多行单列,只能在where子句里面使用子查询(in,any, all),应该使用>all ,找到员工的姓名,薪资;

select e.ename, e.sal
from emp e
where sal>all(
  select sal 
  from emp
  where deptno=30 );

第三步:还需查找到部门信息,,在from子句之后引入dept表(一定存在关联字段或关联条件);

select e.ename, e.sal ,d.dname
from emp e, dept d
where sal>all(
    select sal 
    from emp
    where deptno=30 ) 
    AND e.deptno=d.deptno ;

第四步:随后要统计部门人数

select deptno dno , count(empno) count
from emp
group by deptno;

第五步:以上查询返回的是多行多列的数据,按照使用原则应该在from子句中使用。

select e.ename, e.sal ,d.dname, temp.count
from emp e, dept d, (
    select deptno dno , count(empno) count
    from emp
    group by deptno ) temp
where sal>all(
    select sal 
    from emp
    where deptno=30 )
    AND e.deptno=d.deptno 
    AND temp.dno=d.deptno ;

实例2:列出与“SCOTT”从事相同工作的所有员工及部门名称,部门人数,领导姓名。
第一步:找到scott的工作,返回单行单列,一般用于where或having 上,此处没有统计需要,所以只在where子句上使用;

 select job from  emp where ename='SCOTT';

第二步:找到符合此要求的雇员信息;

select e.ename, e.job ,e.sal
from emp e
where e.job=(
    select job from  emp where ename='SCOTT');

第三步:查找到对应的部门名称信息,并消除笛卡尔积;

select e.ename, e.job ,e.sal, d.dname
from emp e, dept d
where e.job=(
    select job from  emp where ename='SCOTT')
    AND e.deptno=d.deptno;

第四步:部门人数单独进行统计操作;

select e.ename, e.job ,e.sal, d.dname ,temp.count
from emp e, dept d,(
     select deptno dno,count(empno) count
     from emp
     group by deptno) temp
where e.job=(
    select job from  emp where ename='SCOTT')
    AND e.deptno=d.deptno
    AND d.deptno=temp.dno;

第五步:查找出雇员对应的领导信息,使用emp,自身关联操作;

select e.ename, e.job ,e.sal, d.dname ,temp.count, m.ename
from emp e, dept d,(
    select deptno dno,count(empno) count
    from emp
    group by deptno) temp ,emp m
where e.job=(
    select job from  emp where ename='SCOTT')
    AND e.deptno=d.deptno
    AND d.deptno=temp.dno
    AND e.mgr=m.empno;

第六步:消除掉scott数据

 select e.ename, e.job ,e.sal, d.dname ,temp.count, m.ename
 from emp e, dept d,(
     select deptno dno,count(empno) count
     from emp
     group by deptno) temp ,emp m
 where e.job=(
     select job from  emp where ename='SCOTT')
     AND e.deptno=d.deptno
     AND d.deptno=temp.dno
     AND e.mgr=m.empno
     AND e.ename<>'SCOTT'

实例3:列出所有“CLERK”(办事员)的姓名及其部门名称。部门人数,工资等级。
第一步:找到所有办事员的姓名;

select e.ename from emp e where e.job='CLERK';

第二步:找到部门名称;

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

第三步:统计部门人数;

select e.ename,d.dname,temp.count
from emp e ,dept d,(
    select deptnno dno,count(empno) count
    from emp
    group by deptno) temp
where e.job='CLERK'
    AND e.edptno=d.deptno
    AND d.deptno=temp.dno;

第四步:查询工资等级;

select e.ename,d.dname,temp.count,s.grade
from emp e ,dept d,(
    select deptnno dno,count(empno) count
    from emp
    group by deptno) temp,salgrade s
where e.job='CLERK'
    AND e.edptno=d.deptno
    AND d.deptno=temp.dno
    AND e.sal BETWEEN s.losal AND s.hisal; 

阅读全文
版权声明:本文为博主原创文章,欢迎转载。
本文已收录于以下专栏:

发表评论
HTML/XML objective-c Delphi Ruby PHP C# C++ JavaScript Visual Basic Python Java CSS SQL 其它
相关文章推荐

oracle复杂查询练习题
2013-11-12 13:16 66KB 下载

oracle复杂查询语句
2010-06-08 00:07 3KB 下载
复杂的ORACLE查询语句
1:列出所有员工的姓名,部门名称,和工资 select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptn...
yangdayin 2012-05-20 23:05 1545

Oracle复杂查询实验报告
2015-07-02 22:04 606KB 下载
Oracle复杂查询
1:列出所有员工的姓名,部门名称,和工资 select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptn...
wangzihu 2012-05-22 10:33 784 oracle复杂查询
复杂select语句 操作集合 Union和Union All 查询一: select message_title, message_content, send_begin_t...
dzy21 2016-06-23 11:35 1624 Oracle多表的复杂查询
Oracle多表的复杂查询 一.分页查询: 1.       根据rowid来分   select * from t_xiaoxi where rowid in (select rid from ...
u011715137 2013-09-03 15:13 1332 Oracle基础知识笔记(8) 复杂查询及总结
一、复杂查询 1、 列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。 1、确定所需要的数据表: emp表:可以查询出员工的数量; dep...
Goluck98 2014-05-18 16:03 621 Oracle笔记(八) 复杂查询及总结
一、复杂查询 1、 列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。 1、确定所需要的数据表: emp表:可以查询出员工的数量;dept表:部门名称;...
u012141686 2013-11-14 09:35 793 Oracle笔记(八) 复杂查询及总结
一、复杂查询 1、 列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。 1、确定所需要的数据表: emp表:可以查询出员工的数量; dept表:...
baochanghong 2016-04-18 18:40 374
kan2281123066 +关注
原创 77 粉丝 1 喜欢 0 码云  
他的最新文章 更多文章
Oracle分组统计查询-分组查询 Oracle分组统计查询-统计函数 Oracle多表查询-基本概念
在线课程

【免费】搜狗机器翻译技术分享
讲师:

深度学习在推荐领域的应用和实践
讲师:吴岸城
热门文章 windows 7 32位安装python3.5.2报错:api-ms-win-crt-runtime-l1-1-0.dll丢失
2214
微信小程序转发
893
远程控制
296
secureCRT无法成功连接Ubuntu
245
python爬取网页图片
236
0
  数据库 最新文章
Oracle之复杂查询
数据仓库学习笔记一
SQL语句
17.Oracle杂记——数据字典dba_ts_quotas
18.Oracle杂记——数据字典dba_users
19.Oracle杂记——数据字典dba_views
MySQL分区表
实现一个Android锁屏App的难点总结
mysql用root登录,执行revoke all privileg
innodb 引擎相关模块
上一篇文章           查看所有文章
加:2017-10-30 04:03:18  更:2017-10-30 04:04:06 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年6日历
2018-6-19 22:12:26
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库