谈GROUP BY 中的ROLLUP函数

本文深入解析SQL中的ROLLUP函数特点及用法,通过具体例子展示如何利用ROLLUP进行复杂数据汇总与统计,包括嵌套使用、多条件绑定与排序等高级功能。同时,结合实例说明DECODE函数与ROLLUP结合使用的方法。

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

[size=medium]rollup(a,b)的特点是,先安(a,b)一起汇总统计,然后再按照A进行汇总统计,最后是对所有的统计再统计。

ROLLUP中的参数可以多个,形式也多样,例如包含在()内的参数如果有多个,但是又想对某些进行列绑定按照一个列处理,

则可以嵌套()。下例中的第二就是如此:



例1:

select a.khh,b.jjrxm,a.cjrq, sum(a.cjje) total from tjgmxls a,tkhxx b
where b.jjrbh(+)=a.khh and cjrq<20070201
group by rollup(khh,jjrxm,cjrq);



例2:

select a.khh,b.jjrxm,a.cjrq, sum(a.cjje) total from tjgmxls a,tkhxx b
where b.jjrbh(+)=a.khh and cjrq<20070201
group by rollup((khh,jjrxm),cjrq);

例3:

有表格数据如下,

SQL> select * from test_Value;

MONS JJR CJL CJJE
---------- ---------- ---------- ----------
200801 LZF 100 1000
200802 LZF 200 2000
200803 LZF 300 1000
200801 wth 300 1000
200802 wth 100 500
200803 wth 1000 4000
6 rows selected

在其上做一些比较复杂的查询

-------

SQL> select decode(jjr,null,'汇总',jjr),
2 sum(cjl) ttl_cjl, sum(cjje), avg(cjl), sum(cjl) / sum(cjje)
3 from test_value
4 group by rollup(jjr)
5 order by ttl_cjl
6 /

DECODE(JJR,NULL,'汇总',JJR) TTL_CJL SUM(CJJE) AVG(CJL) SUM(CJL)/SUM(CJJE)
--------------------------- ---------- ---------- ---------- ------------------
LZF 600 4000 200 0.15
wth 1400 5500 466.666666 0.254545454545455
汇总 2000 9500 333.333333 0.210526315789474

这是比较集成的查询使用到统计,rollup,decode,order等功能[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值