Oracle数据库集合运算与高级分组函数

集合

  多个查询语句有可能取冰姐,交集,差集。

  -->union 取并集去重

  -->union all 取并集不去重

  -->minus 取差集,第一个查询语句减去第二个查询语句的共同的

  -->intersect 取交集,取两个查询语句的公共部分

练习1:查询10号部门的员工信息,查询20号部门的员工信息,取并集不去重

  select * from emp where deptno=10

  union all

  select * from emp where deptno=20;

  **:对于集合排序我们需要写在后一个查询语句,排序的字段必须使用select语句明确指定的字段名。

  练习:查询10号和20号的员工信息,查询20号和30号的员工部门信息,取交集并且按员工编号排序。

    select ename,deptno,empno from emp where deptno in(10,20)

    intersect

    seleect ename,deptno,empno from emp where deptno in(20,30) order by empno;

高级分组函数

  -->rollup(p1,p2,p3.......);参数n个,共分n+1组。先按照所有参数分组,然后按照从后往前依次少一个参数进行分组。

 reg:先按照p1,p2,p3分组,在按照p1,p2分组,在按照p1分组,最后一张表为一组。

  -->cube(p1,p2,p3);参数有n个,组合有2^n个

  -->grouping sets(p1,p2,p3);参数有n个,组合有n个,每一个参数为一种组合。

猜你喜欢

转载自www.cnblogs.com/lyr999736/p/9045766.html