集合运算
示例 1:查询10和20号部门的员工
1. select * from emp where deptno=10 or deptno=20; 2. select * from emp where deptno in (10,20); 3. 集合运算 select * from emp where deptno=10 union select * from emp where deptno=20;
示例2:group by中的rollup函数
如果是Group by ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。
如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。
SELECT deptno, job, sum( sal ) FROM emp GROUP BY rollup ( deptno, job ); -- 相当于 select deptno,job,sum(sal) from emp group by deptno,job union select deptno,**to_char(null)**,sum(sal) from emp group by deptno union select **to_number(null),to_char(null)**,sum(sal) from emp;
注意的问题:
1、参与运算的各个集合必须列数相同 且类型一致
2、采用第一个集合作为最后的表头
3、order by永远在最后
4、括号