oracle的rollup,cube等相关基础

来源:互联网 发布:知乎 璇玑图 编辑:程序博客网 时间:2024/06/07 01:47
rollup (department_id, employee_id)
先是对department_id和employee_id 整体分组,然后再对department_id进行分组
之后再department_id(括号内第一个参数) 进行分组得出的结果做和


所以rollup的结果是有n+1层次的结果
第一层: department_id,employee_id
第二层: department_id
第三层: 对第二层的结果求和




rollup(a,b)   统计列包含:(a,b)、(a)、()
rollup(a,b,c) 统计列包含:(a,b,c)、(a,b)、(a)、()






cube(department_id ,employee_id)
先是对department_id 和employee_id整体分组,
然后对department_id进行分组,
之后再对employee_id分组,
最后求和
得出的结果有n+1个层次
第一层:department_id,employee_id
第二层:department_id    和  employee_id
第三层: 求和


cube(a,b)     统计列包含:(a,b)、(a)、(b)、()
cube(a,b,c)   统计列包含:(a,b,c)、(a,b)、(a,c)、(b,c)、(a)、(b)、(c)、()




grouping: 返回值是0或1 
grouping函数是用于显示该列值在分组时是否参与其中


对以上两个分组函数而言
第一层: 0 ,0
第二层: 对department_id 进行统计,则 0,1 相当于employee_id 参与了分组
         对employee_id 进行统计,则 1, 0  相当于department_id 参与了分组
第三层:1,1 统计求和,相当于department_id 和employee_id 均参与了分组




grouping set
将各分组项产生的结果union all起来
原创粉丝点击