zoukankan      html  css  js  c++  java
  • Oracle学习之集合运算

    一、集合运算操作符

              UNION:(并集)返回两个集合去掉重复值的所有的记录

              UNION ALL:(并集)返回两个集合去掉重复值的所有的记录       

               INTERSECT:(交集)返回两个集合的所有记录,重复的只取一次

              MINUS:(差集)返回属于第一个集合,但不属于第二个集合的所有

                           记录

               集合运算中各个集合必须有相同的列数,且类型一致,集合运算的结

           果采用第一个集合的表头作为最终的表头,order by必须放在每个

           集合后

    二、集合运算

              使用UNION操作符查询scott表中10部门和20部门的员工信息

    Sql代码  收藏代码
    1. SQL> select * from emp  
    2.   2  where deptno=10  
    3.   3  union  
    4.   4  select * from emp  
    5.   5  where deptno=20;  
    6.   
    7.      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO  
    8. ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------  
    9.       7369 SMITH      CLERK           7902 17-12月-80            880                    20  
    10.       7566 JONES      MANAGER         7839 02-4月 -81           2975                    20  
    11.       7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10  
    12.       7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20  
    13.       7839 KING       PRESIDENT            17-11月-81           5000                    10  
    14.       7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20  
    15.       7902 FORD       ANALYST         7566 03-12月-81           3000                    20  
    16.       7934 MILLER     CLERK           7782 23-1月 -82           1300                    10  
    17.   
    18. 已选择8行。  

               使用UNION操作符统计scott用户下emp表中得各个部门的总工资,

           和各部门各职位的工资

    Sql代码  收藏代码
    1. SQL> break on deptno skip 2;  
    2. SQL> select deptno,job,sum(sal) from emp group by deptno,job  
    3.   2  union  
    4.   3  select deptno,to_char(null),sum(sal) from emp group by deptno  
    5.   4  union  
    6.   5  select to_number(null),to_char(null),sum(sal) from emp;  
    7.   
    8.     DEPTNO JOB         SUM(SAL)  
    9. ---------- --------- ----------  
    10.         10 CLERK           1300  
    11.            MANAGER         2450  
    12.            PRESIDENT       5000  
    13.                            8750  
    14.   
    15.   
    16.         20 ANALYST         6000  
    17.            CLERK           1980  
    18.            MANAGER         2975  
    19.                           10955  
    20.   
    21.   
    22.         30 CLERK            950  
    23.            MANAGER         2850  
    24.            SALESMAN        5600  
    25.                            9400  
    26.   
    27.   
    28.                           29105  
    29.   
    30.   
    31.   
    32. 已选择13行。  

               使用UNION ALL操作符查询scott用户下dept表中的信息

    Sql代码  收藏代码
    1. SQL> select * from dept  
    2.   2  union all  
    3.   3  select * from dept;  
    4.   
    5.     DEPTNO DNAME          LOC  
    6. ---------- -------------- -------------  
    7.         10 ACCOUNTING     NEW YORK  
    8.         20 RESEARCH       DALLAS  
    9.         30 SALES          CHICAGO  
    10.         40 OPERATIONS     BOSTON  
    11.         10 ACCOUNTING     NEW YORK  
    12.         20 RESEARCH       DALLAS  
    13.         30 SALES          CHICAGO  
    14.         40 OPERATIONS     BOSTON  
    15.   
    16. 已选择8行。  

                使用INTERSECT操作符查询scott用户下dept表和emp表中都存在的

            部门号

    Sql代码  收藏代码
    1. SQL> select deptno from emp  
    2.   2  intersect  
    3.   3  select deptno from dept;  
    4.   
    5.     DEPTNO  
    6. ----------  
    7.         10  
    8.         20  
    9.         30  

                   使用MINUS操作符查询scott用户下dept表中存在而emp表中

                   不存在的部门号

    Sql代码  收藏代码
    1. SQL> select deptno from dept  
    2.   2  minus  
    3.   3  select deptno from emp;  
    4.   
    5.     DEPTNO  
    6. ----------  
    7.         40  

                    使用MINUS操作符查询scott用户下emp表中的员工工资属于

              (1200-2000)这个档,而不属于(1400-3000)这个档的员工

    Sql代码  收藏代码
    1. SQL> select empno,ename,job,sal  
    2.   2  from emp  
    3.   3  where sal between 1200 and 2000  
    4.   4  minus  
    5.   5  select empno,ename,job,sal  
    6.   6  from emp  
    7.   7  where sal between 1400 and 3000;  
    8.   
    9.      EMPNO ENAME      JOB              SAL  
    10. ---------- ---------- --------- ----------  
    11.       7521 WARD       SALESMAN        1250  
    12.       7654 MARTIN     SALESMAN        1250  
    13.       7934 MILLER     CLERK           1300  
  • 相关阅读:
    Linux——强制退出命令
    2019-08-07-安装jdk1.8配置环境变量
    2019-08-07-查看当前的系统版本-中文乱码显示
    2019-08-07-centos系统上文件出现乱码
    2019-08-06-centos6.4关闭防火墙-设置通过防火墙的端口
    2019-08-06-写批处理
    2019-08-06-centos 打包
    2019-07-26_解密黑客攻击前的准备
    2019-07-24-DOS 常用命令大全
    2019-07-24-windows一些常用命令-netsh
  • 原文地址:https://www.cnblogs.com/tian830937/p/4641089.html
Copyright © 2011-2022 走看看