聚集函数之cube
oracle cube ,rollup,grouping sets 是三兄弟。cube 根据给定的列作为参数,计算出所有可能的聚合。语法格式:group by cube(a,b,c)等同于group by grouping sets ((a,b,c),(a,b),(b,c),(a,c),(a),(b)(c),())
等同于group by a,b,c
union
group by a,b
union
group by b,c
union
group by a,c
union
group by a
union
group by b
union
group by c
union
最后是一个整体的聚集。
举个例子来说明比较,假如我要同时实现:
1、查询每个部门每类工作的平均,最大,最小工资。
2、查询每个部门的平均工资平均,最大,最小工资。
3、查询每类工作平均,最大,最小工资。
4、整个公司(employees 表)的平均,最大,最小工资。
一、使用一条select 语句通过 cube 聚集函数实现的。
二、使用一条select 语句通过转换成对等的grouping sets 函数实现的。三、通过转换成多条select 语句 通过union 实现的。
注:在输出结果中
1、department_id,job_id 不为空的对应,每个部门每类工作的
平均,最大,最小工资。
2、只有job_id 为空的对应,每个部门的平均工资平均,最大,
最小工资。
3、只有department_id 为空的对应,每类工作平均,最大,
最小工资。
4、department_id,job_id 都为空的对应,整个公司(employees 表)的平均,最大,最小工资。
1.JPG
3.JPG
4.JPG
5.JPG
6.JPG
2.JPG
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26110315/viewspace-720302/
,如需转载,请注明出处,否则将追究法律责任。