连接分组

连接分组

  • 连接分组提供一种简明的方式来生成有用的分组组合
  • 为了指定连接分组集合, 用逗号分开多重分组集合, ROLLUP, 和CUBE操作, 以便ORACLE服务器将它们组合在一个单个的GROUP BY 子句中
  • 分组是每个分组集合交叉乘积的结果

GROUP BY GROUPING SETS(a,b), GROUPING SETS(c,d)

前面的SQL定义下面的分组:

(a,c), (a,d), (b,c), (b,d)

分组集的串联是非常有用的, 因为

  • 开发查询容易: 你不需要手工列举所有分组
  • 被应用程序使用: 由OLAD应用程序产生的SQL常常包括串联的分组集, 用每个分组集定义每一维需要的分组

幻灯片中的例子:

ROLLUP(JOB_ID) = (JOB_ID,NULL), CUBE(MANAGER_ID) = (MANAGER_ID, NULL)

所以

GROUP BY DEPARTMENT_ID, ROLLUP(JOB_ID), CUBE(MANAGER_ID)

就等价于DEPARTMENT_ID*(JOB_ID,NULL)*(MANAGER_ID,NULL)

最后的结果:

(department_id,job_id,manager_id),(department_id,null,manager_id),(department_id,job_id,null),(department_id,null,null)

=>
(department_id,job_id,manager_id),(department_id,manager_id),(department_id,job_id),(department_id);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值