sql sum,group by 分组求和后在求总和,with rollup,with cube的区别

本文详细介绍如何使用SQL的WITH ROLLUP和WITH CUBE函数,对表数据按name和ph字段分组,并求num字段的总和。通过具体实例,展示了不同函数的使用场景和效果,帮助读者掌握复杂的数据汇总技巧。

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

有表数据如下:

  create table tt
  (
   name varchar(10),
   num decimal(18,2),
   ph int
  )

  insert into tt(name,num,ph) values ('test1',10,1)
  insert into tt(name,num,ph) values ('test1',30,1)
  insert into tt(name,num,ph) values ('test1',50.5,3)
  insert into tt(name,num,ph) values ('test2',60,2)
  insert into tt(name,num,ph) values ('test2',2.65,2)
  insert into tt(name,num,ph) values ('test2',66.8,3)

  select * from tt

在这里插入图片描述

想要根据name,ph字段分组 求 num 总和
使用聚合函数sum+group by

 select name,ph,sum(num) as num from tt group by name,ph order by name

得到结果
在这里插入图片描述
怎样得到相同name的 总 num 呢?
1,使用 WITH ROLLUP,此函数是对聚合函数进行求和,注意 with rollup是对 group by 后的第一个字段,进行分组求和

  select name,ph,sum(num) as num from tt group by name,ph WITH rollup

结果如图:在这里插入图片描述

2,使用 with cube

select name,ph,sum(num) as num from tt group by name,ph with cube  

该函数是对group by 后的所有字段进行 分组求和,顺序为group by后的字段从右到左,分组求和
在这里插入图片描述
童鞋们,这个截图和解释 应该很详细了,想必大家都可以看的懂吧,有不懂的可以私信dd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值