天天看點

oracle 集合減,Oracle學習之集合運算

一、集合運算操作符

UNION:(并集)傳回兩個集合去掉重複值的所有的記錄

UNION ALL:(并集)傳回兩個集合去掉重複值的所有的記錄

INTERSECT:(交集)傳回兩個集合的所有記錄,重複的隻取一次

MINUS:(差集)傳回屬于第一個集合,但不屬于第二個集合的所有

記錄

集合運算中各個集合必須有相同的列數,且類型一緻,集合運算的結

果将采用第一個集合的表頭作為最終的表頭,order by必須放在每個

集合後

二、集合運算

使用UNION操作符查詢scott表中10部門和20部門的員工資訊

Sql代碼  

oracle 集合減,Oracle學習之集合運算

SQL> select * from emp

2  where deptno=10

3  union

4  select * from emp

5  where deptno=20;

EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

7369 SMITH      CLERK           7902 17-12月-80            880                    20

7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

7839 KING       PRESIDENT            17-11月-81           5000                    10

7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20

7902 FORD       ANALYST         7566 03-12月-81           3000                    20

7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

已選擇8行。

使用UNION操作符統計scott使用者下emp表中得各個部門的總工資,

和各部門各職位的工資

Sql代碼  

oracle 集合減,Oracle學習之集合運算

SQL> break on deptno skip 2;

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

MANAGER         2450

PRESIDENT       5000

8750

20 ANALYST         6000

CLERK           1980

MANAGER         2975

10955

30 CLERK            950

MANAGER         2850

SALESMAN        5600

9400

29105

已選擇13行。

使用UNION ALL操作符查詢scott使用者下dept表中的資訊

Sql代碼  

oracle 集合減,Oracle學習之集合運算

SQL> select * from dept

2  union all

3  select * from dept;

DEPTNO DNAME          LOC

---------- -------------- -------------

10 ACCOUNTING     NEW YORK

20 RESEARCH       DALLAS

30 SALES          CHICAGO

40 OPERATIONS     BOSTON

10 ACCOUNTING     NEW YORK

20 RESEARCH       DALLAS

30 SALES          CHICAGO

40 OPERATIONS     BOSTON

已選擇8行。

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

部門号

Sql代碼  

oracle 集合減,Oracle學習之集合運算

SQL> select deptno from emp

2  intersect

3  select deptno from dept;

DEPTNO

----------

10

20

30

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

不存在的部門号

Sql代碼  

oracle 集合減,Oracle學習之集合運算

SQL> select deptno from dept

2  minus

3  select deptno from emp;

DEPTNO

----------

40

使用MINUS操作符查詢scott使用者下emp表中的員工工資屬于

(1200-2000)這個檔,而不屬于(1400-3000)這個檔的員工

Sql代碼  

oracle 集合減,Oracle學習之集合運算

SQL> select empno,ename,job,sal

2  from emp

3  where sal between 1200 and 2000

4  minus

5  select empno,ename,job,sal

6  from emp

7  where sal between 1400 and 3000;

EMPNO ENAME      JOB              SAL

---------- ---------- --------- ----------

7521 WARD       SALESMAN        1250

7654 MARTIN     SALESMAN        1250

7934 MILLER     CLERK           1300

原文:http://www.cnblogs.com/tian830937/p/4641089.html