SQL中CUBE和ROLLUP的用法

本文详细介绍了SQL中的ROLLUP和CUBE参数的区别及应用,通过实例展示了如何使用这两种参数对查询结果进行汇总,并解释了如何利用GROUPING函数区分NULL值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在SQL中用参数ROLLUP和CUBE可以对查询处来的数据进行汇总,两个参数的区别是:

  • CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
  • ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
  •  

    太抽象了吧,上图:

    先看表中的数据:

     

     

    如果用ROLLUP的话,请看执行结果:

    它只对Group By后的第一个参数进行合计和总计。

     

    现在换成CUBE,它按第二个参数做完合计和总计之后还有两行,分别对第一个参数的每个组进行合计。

     

    在上面的图片中大家可以看到有许多NULL,那么怎么把这些NULL和实际数据中的NULL区分开呢,答案是用GROUPING函数,如果列中的值来自事实数据,则 GROUPING 函数返回 0;如果列中的值是 CUBE 操作所生成的 NULL,则返回 1,GROUPING是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。请看下图:

     

     

     

     

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值