Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。
如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。
如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。 grouping和grouping_id()可以美化效果。
给一个完整的SQL,我相信根据下面的SQL应该可以学习了。
select decode(grouping_id(t2.deptno,ROWNUM),3,'总计',1,'小计',t2.deptno) deptno,
decode(GROUPING(ROWNUM), 1, NULL, MAX(t2.dname)) dname,
decode(GROUPING(ROWNUM), 1, NULL, MAX(EMPNO)) EMPNO,
decode(GROUPING(ROWNUM), 1, NULL, MAX(ENAME)) ENAME,
decode(GROUPING(ROWNUM), 1, NULL, MAX(job)) job,
SUM(t1.sal)
FROM scott.emp t1, scott.dept t2
WHERE t1.deptno = t2.deptno
GROUP BY ROLLUP(t2.deptno, ROWNUM)
select job,deptno,sum(sal) total_sal
from emp group by rollup(job,deptno);
分享到:
相关推荐
GROUP BY 子句(rollup, ...GROUP BY 语句用于基本的分组,GROUP BY ROLLUP 语句用于生成所有可能的分组结果,GROUP BY CUBE 语句用于生成所有可能的组合结果,GROUP BY GROUPING SETS 语句用于生成指定的分组结果。
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/416356
SQL Server中的用法为group by colomn with [rollup|cube],首先要弄明白rollup 和cube,就要知道group by的用法,group by 为对列进行分组,只展现分组统计的值,而 rollup 为分层次展现,cube 为展现列中所有层次...
SQL语句中Group BY 和Rollup以及cube用法
一、如何理解group by 后 带 rollup 子句所产生的效果 group by 后 带 rollup 子句的功能可以理解为:先按一定的规则产生多种分组,然后按各种分组统计数据(至于统计出的数据是求和还是最大值还是平均值等这就取决...
group by后使用rollup子句总结,oracle开发人员值得一看
oracle 聚合函数的扩展使用 ...2.CUBE子句也是对GROUP BY子句进行扩展,返回CUBE中所有列组合的小计信息,同时在最后显示总计信息。 3.GROUPING()函数与ROLLUP、CUBE的结合使用 4.GROUPING_ID()函数的使用
oracle rollup及cube的使用,开发人员必备的资料
NULL 博文链接:https://wangjingyi.iteye.com/blog/1545090
本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select * from scott.dept; create table emp as select * from ...
用union all方式对上面代码改写如下:SQL> select group_id,job,sum(salary) from group_test 2 g
深入介结分析函数的内部实现cube,rollup,grouping,里面有具体的例子来说明,方便大家理解学习
关于with cube ,with rollup 和 grouping 通过查看sql 2005的帮助文档找到了CUBE 和 ROLLUP 之间的具体区别: ...仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相关联的选择列表中才允许分组。 当看到以上
rollup,cube,grouping sets()的个人理解 其中关于这三个的各种情况,举例论证这三个的区别。
GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。 GROUP BY语法 SELECT 列名, ...
Oracle的Rollup用法 Oracle的Rollup用法
group by扩展包括 rollup、cube、grouping、grouping sets的用法和说明
rollup cube grouping sets的用法 详细,讲述与实例想结合
在 Oracle 中,除了 Grouping Sets 之外,还有其他两种分组统计方法:Rollup 和 Cube。Rollup 是一种统计方法,它可以对数据进行分组和聚合计算,但它只能对单个列进行分组。Cube 是一种特殊的分组统计方法,它可以...
使用ROLLUP函数生成报表的小计、合计 这个函数很不错 使用的范围其实蛮广的