oracle group by中rollup和cube的区别:
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操作。
测试数据:
/*
Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。
*/
--创建表
create table fzq
(
name varchar(20),
calss varchar(2),
kemu varchar(4),
chengji varchar(3)
)
--插入数据
insert into fzq values
('11','1','数学','90');
insert into fzq values
('11','1','语文','68');
insert into fzq values
('12','1','数学','90');
insert into fzq values
('12','1','语文','88');
insert into fzq values
('22','2','数学','70');
insert into fzq values
('22','2','语文','88');
insert into fzq values
('33','2','数学','95');
insert into fzq values
('33','2','语文','98');
--测试SQL
select * from fzq;
select calss,name,sum(chengji) from fzq group by calss,name;
select calss,name,sum(chengji) from fzq group by cube(calss,name) order by calss;
select calss,name,sum(chengji) from fzq group by rollup(calss,name) order by calss;
select calss,name,sum(chengji) from fzq group by grouping sets(calss,name);
分享到:
相关推荐
### SQL语句中Group BY 和Rollup以及Cube用法 #### Group BY 子句 `GROUP BY`子句是SQL查询中的一个非常重要的部分,它用于将数据表中的行按照一个或多个列进行分组,使得可以对每个分组执行聚合函数(如SUM、...
Oracle数据库中的ROLLUP和CUBE是两种用于生成数据汇总的SQL操作,它们在数据分析和报告制作中非常有用。本文将详细介绍这两个概念以及如何在实际应用中使用它们。 首先,我们来理解`ROLLUP`。ROLLUP操作是GROUP BY...
GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的三种样式:GROUP BY、GROUP BY ROLLUP、GROUP BY CUBE、GROUP BY GROUPING SETS。 1. GROUP BY 语句 GROUP BY 语句是最基本的分组语句,它可以根据...
SQL Server中的用法为group by colomn with [rollup|cube],首先要弄明白rollup 和cube,就要知道group by的用法,group by 为对列进行分组,只展现分组统计的值,而 rollup 为分层次展现,cube 为展现列中所有层次...
- 对于 `GROUP BY CUBE(A, B)`,产生的分组包括:`GROUP BY A, B`、`GROUP BY A`、`GROUP BY B` 和 `GROUP BY NULL`。 相比之下,`ROLLUP` 会按照层次递减的方式生成分组,只包括:`GROUP BY A, B`、`GROUP BY A` ...
`ROLLUP` 子句可以在 `GROUP BY` 语句中使用,用于对分组结果进行汇总统计。它可以产生多种分组,然后对各个分组进行统计操作。`ROLLUP` 子句返回的结果集可以理解为各个分组所产生的结果集的并集且没有去掉重复数据...
而在`GROUP BY`的基础上,`CUBE`和`ROLLUP`两个关键词则提供了一种更加灵活的数据分组方式,可以生成不同层次级别的汇总结果。 #### 一、Cube的理解 `CUBE`是SQL中的一个扩展关键字,它可以生成所有可能的分组组合...
而在GROUP BY的基础上,Oracle数据库提供了两种高级分组功能:ROLLUP和CUBE,它们允许我们更灵活地生成汇总数据。 1. ROLLUP(滚联回溯): ROLLUP是GROUP BY的一个扩展,它不仅返回每个单独的分组结果,还会生成...
`CUBE`和`ROLLUP`是`WITH`子句中的两个特殊运算符,它们主要用于多维度数据分析和聚合操作,通常在`GROUP BY`语句中配合使用。 1. **CUBE运算符**: `CUBE`生成的结果集包含了所有可能的子集,即所选列中值的所有...
它返回一个整数值,表示其参数在GROUP BY或ROLLUP/CUBE中的分组级别。值为0表示详细数据,非零值表示不同级别的汇总。例如: ```sql SELECT DIVISION, JOB_ID, SUM(SALARY), GROUPING(DIVISION), GROUPING(JOB_ID...
为了在报表中添加总计行,我们可以使用`GROUP BY ROLLUP`: ```sql SELECT ACCESSIONSTATE, COUNT(*) AS num FROM PSNACCOUNT GROUP BY ROLLUP (ACCESSIONSTATE); ``` 使用了`ROLLUP`之后,查询结果不仅包含了每个...
### Oracle中的ROLLUP与CUBE使用详解 在Oracle数据库中,`ROLLUP`与`CUBE`是非常重要的分组函数,被广泛应用于数据汇总、数据分析等场景中。这两个功能可以帮助开发人员快速地对数据进行多维度分析,是开发人员必备...
这个文档应该包含了具体的示例和代码,展示了如何在Hive SQL查询中使用窗口函数、cube和rollup。通过实践这些示例,你可以更深入地了解这些功能,并能灵活地应用于你的数据处理任务中。 在进行大数据分析时,了解并...
本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select * from scott.dept; create table emp as select * from ...
Oracle 的 Rollup 用法是指在 SQL 语句中使用 ROLLUP 子句来对数据进行聚合和分组。ROLLUP 子句可以将查询结果按照一个或多个字段进行分组,并且可以生成子总计和总计。 在 Oracle 中,ROLLUP 子句可以与 GROUP BY ...
在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...
CUBE在GROUP BY子句中使用,并且需要与WITH CUBE关键字一起。这将生成所有维度列的可能组合,以及这些组合对应的基础行的聚合值。例如,如果你有产品(Item)和颜色(Color)两个维度,CUBE将返回所有可能的Item-...
在"ORACLE学习笔记系列(15)使用扩展的 GROUP BY 子句"这篇博文中,作者深入探讨了GROUP BY子句的高级用法,特别是如何利用扩展功能来处理更复杂的查询需求。 在标准的GROUP BY语句中,我们通常会指定一列或多列,...