问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

有谁知道oracle 集合运算 INTERSECT 和 ALL 连在一起怎么用 给举个例子谢谢了 我想求交集又不想删除重复行

发布网友 发布时间:2022-04-07 20:07

我来回答

2个回答

懂视网 时间:2022-04-08 00:28


  3   select * from emp where deptno=20;


     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO                                                            
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------                                                            
      7369 SMITH      CLERK           7902 17-12月-80            800                    20                                                            
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20                                                            
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10                                                            
      7788 SCOTT      ANALYST         7566 13-7月 -87           3000                    20                                                            
      7839 KING       PRESIDENT            17-11月-81           5000                    10                                                            
      7876 ADAMS      CLERK           7788 13-7月 -87           1100                    20                                                            
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20                                                            
      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10                                                            


已选择8行。

若直接合并,则会出现语法错误:
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,sum(sal) from emp group by deptno
  4  union
  5  select sum(sal) from emp;
select deptno,sum(sal) from emp group by deptno
*
第 3 行出现错误: 
ORA-01789: 查询块具有不正确的结果列数 



集合运算

技术分享



SQL> /*
SQL> 集合运算:
SQL> 1. 参与运算的各个集合,必须列数相同,且类型一致
SQL> 2. 最终结果采用第一个集合的表头作为表头
SQL> 3. order by必须在每个集合后使用相同的order by

SQL> */

对于字符添加空列,使用to_char(null)

对于数字添加空列,使用to_number(null)



union


UNION运算符返回两个集合去掉重复元素后的所有记录 UNIONALL返回两个集合的所有记录,包括重复的

SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,to_char(null),sum(sal) from emp group by deptno
  4  union
  5  select to_number(null),to_char(null),sum(sal) from emp;


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        10 CLERK           1300                                                                                                                       
        10 MANAGER         2450                                                                                                                       
        10 PRESIDENT       5000                                                                                                                       
        10                 8750                                                                                                                       
        20 ANALYST         6000                                                                                                                       
        20 CLERK           1900                                                                                                                       
        20 MANAGER         2975                                                                                                                       
        20                10875                                                                                                                       
        30 CLERK            950                                                                                                                       
        30 MANAGER         2850                                                                                                                       
        30 SALESMAN        5600                                                                                                                       


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        30                 9400                                                                                                                       
                          29025                                                                                                                       


已选择13行。

格式化:
SQL> break on deptno skip  2
SQL> /


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        10 CLERK           1300                                                                                                                       
           MANAGER         2450                                                                                                                       
           PRESIDENT       5000                                                                                                                       
                           8750                                                                                                                       
                                                                                                                                                      
                                                                                                                                                      
        20 ANALYST         6000                                                                                                                       
           CLERK           1900                                                                                                                       
           MANAGER         2975                                                                                                                       
                          10875                                                                                                                       
                                                                                                                                                      


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
                                                                                                                                                      
        30 CLERK            950                                                                                                                       
           MANAGER         2850                                                                                                                       
           SALESMAN        5600                                                                                                                       
                           9400                                                                                                                       
                                                                                                                                                      
                                                                                                                                                      
                          29025                                                                                                                       
                                                                                                                                                      
                                                                                                                                                      


已选择13行。


SQL> break on null
SQL> /


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        10 CLERK           1300                                                                                                                       
        10 MANAGER         2450                                                                                                                       
        10 PRESIDENT       5000                                                                                                                       
        10                 8750                                                                                                                       
        20 ANALYST         6000                                                                                                                       
        20 CLERK           1900                                                                                                                       
        20 MANAGER         2975                                                                                                                       
        20                10875                                                                                                                       
        30 CLERK            950                                                                                                                       
        30 MANAGER         2850                                                                                                                       
        30 SALESMAN        5600                                                                                                                       


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        30                 9400                                                                                                                       
                          29025                                                                                                                       


已选择13行。


SQL> host cls

打开SQL执行的时间

SQL> --打开SQL执行的时间
SQL> set timing on
SQL> select deptno,job,sum(sal)
  2  from emp
  3  group by rollup(deptno,job);


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        10 CLERK           1300                                                                                                                       
        10 MANAGER         2450                                                                                                                       
        10 PRESIDENT       5000                                                                                                                       
        10                 8750                                                                                                                       
        20 CLERK           1900                                                                                                                       
        20 ANALYST         6000                                                                                                                       
        20 MANAGER         2975                                                                                                                       
        20                10875                                                                                                                       
        30 CLERK            950                                                                                                                       
        30 MANAGER         2850                                                                                                                       
        30 SALESMAN        5600                                                                                                                       


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        30                 9400                                                                                                                       
                          29025                                                                                                                       


已选择13行。


已用时间:  00: 00: 00.00
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,to_char(null),sum(sal) from emp group by deptno
  4  union
  5  select to_number(null),to_char(null),sum(sal) from emp;


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        10 CLERK           1300                                                                                                                       
        10 MANAGER         2450                                                                                                                       
        10 PRESIDENT       5000                                                                                                                       
        10                 8750                                                                                                                       
        20 ANALYST         6000                                                                                                                       
        20 CLERK           1900                                                                                                                       
        20 MANAGER         2975                                                                                                                       
        20                10875                                                                                                                       
        30 CLERK            950                                                                                                                       
        30 MANAGER         2850                                                                                                                       
        30 SALESMAN        5600                                                                                                                       


    DEPTNO JOB         SUM(SAL)                                                                                                                       
---------- --------- ----------                                                                                                                       
        30                 9400                                                                                                                       
                          29025                                                                                                                       


已选择13行。


已用时间:  00: 00: 00.00

SQL> set timing off

这儿由于数据量太少导致时间太短无法测出,在平时可以使用此种方法来检测哪一个sql语句执行时间更短,则那个sql更为好


INTERSECT语句

INTERSECT 运算符返回同时属于两个集合的记录



显示薪水同时位于级别1(700~1300)和级别2(1201~1400)的员工信息:

SQL> select ename,sal from emp

  2  where sal between 700 and 1300
  3  INTERSECT
  4  select ename,sal from emp
  5  where sal between 1201 and 1400;


ENAME             SAL                                                                                                                                 
---------- ----------                                                                                                                                 
MARTIN           1250                                                                                                                                 
MILLER           1300                                                                                                                                 
WARD             1250                                                                                                                                 

minus


MINUS返回属于第一个集合,但不属于第二个集合的记录。

显示薪水同时位于级别1(700~1300),但不属于级别2(1201~1400)的员工信息:
SQL> select ename,sal from emp   2  where sal between 700 and 1300
  3  minus
  4  select ename,sal from emp
  5  where sal between 1201 and 1400;


ENAME             SAL                                                                                                                                 
---------- ----------                                                                                                                                 
ADAMS            1100                                                                                                                                 
JAMES             950                                                                                                                                 
SMITH             800                                                                                                                                 






集合运算注意事项

lselect语句中参数类型和个数要一致。 l可以使用括号改变集合执行的顺序 l如果有order by子句,必须放到每一句查询语句后 l集合运算采用第一个语句的表头作为表头

Oracle学习(7):集合运算

标签:oracle   sql   学习笔记   数据   

热心网友 时间:2022-04-07 21:36

在oracle的SQL语言中ALL和DISTINCT是一对选项。ALL是显示所有行,包括重复行,而DISTINCT是排除重复行。当这两个选型都不选时默认为选择了ALL选项。因此,如果没有特别指定DISTINCT选项,都认为是选择了ALL选项。
在你的问题中,不加DISTINCT选项正常做交集运算就可以了。
oracle集合运算关键字

oracle集合运算关键字是并集union,union all,交集intersect,差集minus。集合运算是数学科学中常用的词语,是一种非常有效的构造形体的方法,可以直观的减少运算难度。集合运算是实体造型系统中非常重要的模块,从一维几何元素到三维几何元素,人们针对不同的情况和应用要求,提出了不少集合运算算法。在早期的...

SQl查询中集合的并运算符是:

4、INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。在下列 INTERSECT 运算符的示例中,查询返回收入超过 $21,000 有管理责任且工龄少于8年的雇员的姓名和 ID。SELECT...

SQL数据库语句大全

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、说明:使用外连接 A、left outer join: 左外连接(左连接):结果集几包括连接表的匹配行,也包...

oracle 一个结果集是否在另一结果集中存在

select decode(sign(count(*)),1,0,0,1) as fieldname from (select * from a minus select * from b)一楼的方法很好 巧秒的利用了集合相减 把B从A中减掉 如果有剩余说明两a有不在B中的记录 反之则没有

oracle里面更新操作能带有四则运算吗

Oracle数据库客户端一般需要安装在服务器上,可以在服务器端操作,一般我们可以用sql developer工具远程连接到数据库,先行建立数据库,然后对表进行增删改查。也可以使用MyEclispse的DB Broswer工具进行连接数据库并进行简单的增删改查。 2.SQL语句 Data Definition Language(DDL): 主要用于建立、修改、删除数据库对象(表)...

C#定义一个泛型集合类。要求:实现Ienumerable<T>接口,T是值类型,并T...

Concat 连接两个序列,直接首尾相连。返回结果可能存在重复数据 Except 获取两个元素集合的差集,可以指定相等比较方法 Intersect 获取两个元素集合的交集,可以指定相等比较方法 Union 获取两个元素集合的并集,可以指定相等比较方法 SequenceEqual 比较两个序列是否相等,可以指定相等比较方法 Where 根据制定条件...

列举一些sql高级查询语句

1.集合操作学习oracle中集合操作的有关语句,掌握union,union all,minus,interest的使用,能够描述结合运算,并且能够将多个查询组合到一个查询中去,能够控制行返回的顺序。包含集合运算的查询称为复合查询。见表格1-1表1-1Operator Returns contentUNION 由每个查询选择的所有不重复的行 并集不包含重复值UNION ALL 由每...

哪位专家能否推荐给我学习sql语言最基本的资料。

当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、说明:使用外连接 A、left outer join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT ...

MySQL随机查询优化问题,怎么解决

系统首先根据各个表之间的联接条件,把多个表合成一个临时表 后,再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里 (12) 减少对表的查询: 在含有子查询的SQL语句中,要特别注意减少对表的查询.例子: ...

利用Matlab进行交集、并集等运算

Matlab是强大的数值分析与计算的软件,本例分享使用Matlab进行两个数集的交集、并集等运算。intersect函数取交集 帮助文档: intersect Set intersection. C = intersect(A,B) for vectors A and B, returns the values common to the two vectors with no repetitions. C will be sorted. C = ...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
喝红茶的好处,喝红茶对人有好处吗(五大好处) 大疆灵眸2和3的区别 学前儿童的社会领域教育包括了哪些? 为什么vivo手机投屏到电视上只有图片、音乐和视频? 阿玛菲海岸(意大利之旅一)被世界地理杂志评为人生必去十大景点_百度知 ... 列各项中,属于消耗性生物资产的是( ). A.奶牛 B.果树 C.肉鸡 D.种禽 有什么好听的日韩。欧美歌曲和好看的MTV! 有什么好听的日韩歌曲如题 谢谢了 微信聊天记录怎么同步到另一台手机上面呢 微信聊天记录如何同步到另一... 支付宝变更实名认证怎么操作 希沃课件如何转成ppt 有没有2米宽3米长的浴缸 qq巧遇卡被举报怎么办 2米乘3米的卫生间能放的下浴缸吗? qq2014巧遇卡怎么没了 有没有宽2米,长3米的浴缸? 2米宽 2.5米长的卫生间,想装浴缸淋浴洗手台,坐便,放得下吗?怎么放? 请问:一个单人浴缸装满水,大约需要多少升??(小学数学题) 巧遇卡怎么没了? qq巧遇卡什么时候恢复 男孩子性格内向,连qq巧遇卡都不敢用,怎么办- - 2米乖2米的浴缸深度80公分是多少升容量 qq巧遇卡在哪里 qq巧遇卡怎么没了 QQ巧遇卡怎么不能和别人聊天,好像别人看不见你发的字! 关于QQ上的巧遇卡。。 关于QQ巧遇卡的问题?怎么搭讪*,有什么技巧和话题聊嘛?感觉没话题,请求帮助 上QQ没人理怎么办 腾讯为什么要停运巧遇卡,不可能是因为没有钱吧,知道的告诉我一下!! QQ巧遇卡为什么上午没人理我, 到了下午就很多人理我呢?是腾讯设置了的吗? 结婚第25年是什么婚 结婚25周年是银婚吗 电视机分量输入是什麽意思? 我的电视支持分量输入,请问一下,怎样和电脑连接,我的显卡有VGA接口岸和S端,分量输入的线是什么样的 电视机的这几个插孔怎么连接电脑? 笔记本如何连接电视? vga如何连接电脑和电视?我连接了没有反应?电视上只有电视,视屏1,视屏2,分量输入,HDMI选项,怎么设置 电脑和电视连接,除了HDMI以及VGA还有什么其他的连接方式? 电脑连接电视机需要什么 大连市钢材市场在哪里?有几个? 电脑连接等离子电视 电脑连接电视时需要怎么连接?都需要买些什么 盘锦钢材市场怎么走 !?在哪里?或者有什么能用到钢材的工厂!?想去考察,急!急!急! PC连接电视问题 高手来 贾跃亭乐视结局三大猜想是什么? 乐视VS小米:同是生态,有何不同 二极管在交流和直流中都可以用吗? 全国人民都知道乐视欠122亿了!你怎么看这波操作? 二极管可以直接接220V的交流电吗? 一百乘一百等于
  • 焦点

最新推荐

猜你喜欢

热门推荐