Oracle入门基础(七)一一集合运算
SQL> /*
SQL> 查询10和20号部门的员工
SQL> 1. select * from emp where deptno=10 or deptno=20;
SQL> 2. select * from emp where deptno in (10,20);
SQL> 3. 集合运算
SQL>     select * from emp where deptno=10
SQL>       加上
SQL>     select * from emp where deptno=20
SQL> */
SQL> select * from emp where deptno=10
  2  union
  3  select * from emp where deptno=20;
     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80            800                    20
      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10                                                                                                              
SQL>  select deptno,job,sum(sal) from emp group by rollup(deptno,job);
 助解:group by rollup(a,b)
			这条语句相当于分组三次
			第一次,a,b两个约束条件,即a相同,b也相同的分为同一组
			第二次,只是用a一个条件进行分组,把上一次形成的结果在进行分组,把a相同的分   为一组
			第三次,没有约束条件,将整个表数据分为一组
			这样三次之后,我们就有了三个分组条件,那么sum函数,就会给每一个分组都执行一次计算总和
    DEPTNO JOB         SUM(SAL)
---------- --------- ----------
        10     CLERK           1300
        10     MANAGER            8750
        20     CLERK           1900
        20     MANAGER          10875
        30     CLERK            950
        30     MANAGER         2850                                                                                                                                                                         
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> 1、参与运算的各个集合必须列数相同 且类型一致
SQL> 2、采用第一个集合作为最后的表头
SQL> 3、order by永远在最后
SQL> 4、括号
SQL> --break on deptno skip 2
助解:break on deptno skip 2;
           break on deptno 表示相同的部门号只显示一次, skip 2 每个部门之间,相隔两个空行
SQL> --SQL 执行的时间
SQL>
SQL> set timing on
SQL>  select deptno,job,sum(sal) from emp group by rollup(deptno,job);
已用时间:  00: 00: 00.01
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;
已用时间:  00: 00: 00.03
SQL> --SQL优化 4、 尽量不要使用集合运算
SQL> set timing off
SQL> spool off
												
											Oracle入门基础(七)一一集合运算的更多相关文章
- [SQL] SQL 基础知识梳理(七)-  集合运算
		
SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 ...
 - Oracle学习(七):集合运算
		
1.知识点:能够对比以下的录屏进行阅读 SQL> -- 查询10和20号部门的员工的3种方法 SQL> --1. select * from emp where deptno in (10 ...
 - SQL基础学习_06_集合运算和联结
		
集合运算 1. 并集:UNION 例: SELECT shohin_id, shohin_mei FROM Shohin UNION SELECT shohin_id ...
 - SQL Server进阶(七)集合运算
		
概述 为什么使用集合运算: 在集合运算中比联接查询和EXISTS/NOT EXISTS更方便. 并集运算(UNION) 并集:两个集合的并集是一个包含集合A和B中所有元素的集合. 在T-SQL中.UN ...
 - Oracle入门基础(十三)一一java调用oracle存储过程
		
package demo; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultS ...
 - Oracle入门基础(十二)一一储存过程及触发器
		
1.第一个存储过程 打印Hello World 调用存储过程: 1.exec sayhelloworld(); 2.begin sayhelloworld(); sayhelloworld(); en ...
 - Oracle入门基础(十一)一一PL/SQL基本语法
		
1.打印Hello World declare --说明部分 begin --程序 dbms_output.put_line('Hello World'); end; 2.引用型变量 查询并打印783 ...
 - Oracle入门基础(十)一一数据库其他对象-视图/序列/索引/同义词
		
SQL> --视图 SQL> create view empinfoview as select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname ...
 - Oracle入门基础(八)一一数据处理
		
SQL> SQL的类型 SQL> 1.DML(Data Manipulation Language 数据操作语言): select insert update delete SQL> ...
 
随机推荐
- Excel制作图表太单调了,用哪些可视化分析工具?
			
那么在如今"颜值为王"的现在,如何将数据展现得更好看,让别人更愿意看,这也是一个技术活.好比公司领导让你对某一个项目得研究成果做汇报,那么你不可能给他看单纯的数据一样,你需要让数 ...
 - uniapp vue3 $on/$once/$off 的替代方案
			
仅作参考 仅作参考 仅作参考 并且只支持页面生命周期使用 不支持组件 不支持页面函数方法 下面说了思路需要的话自己添加 今天用到 $once 时发现报错了,原理是vue3移除了该api.我一开始想的是 ...
 - 【C# IO 操作 】Big-endian 和 Little-endian 详解
			
首先,认识字节(Byte),计算机中Byte意思为"字节",8个二进制位构成1个"字节(Byte)",即1Byte=8bit,字节是计算机处理数据的基本单位.所 ...
 - 调用WCF服务的几种方式
			
首先发布了一个名为PersonService的WCF服务.服务契约如下: [ServiceContract] public interface IPersonService { ...
 - 小谈C#泛型
			
(一)泛型的由来 泛型是CLR2.0新增的,泛型兼具可重用性,类型安全和效率.泛型的本质就是在程序第一次编译的为IL代码的时候,就会帮我们生成一个占位符,在git即时编译的时候,就会把占位符替换为真实 ...
 - WIN10:显示文件后缀.exe
 - kNN(k近邻)算法代码实现
			
目标:预测未知数据(或测试数据)X的分类y 批量kNN算法 1.输入一个待预测的X(一维或多维)给训练数据集,计算出训练集X_train中的每一个样本与其的距离 2.找到前k个距离该数据最近的样本-- ...
 - Spring Cloud Gateway 不小心换了个 Web 容器就不能用了,我 TM 人傻了
			
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
 - 创建 maven项目时:Cannot resolve Plugin org.apache.maven.plugins:maven-install-plugin报错
			
Maven在每一次下载jar包的过程中,一旦第一次下载完成后,就会有一个lastUpdate文件,表示该jar包已经下载.下次再检索这个包,也就不会去远程仓库进行下载. 解决办法:找到自己的maven ...
 - 【NLP】