Oracle数据库中的rollup配合group by命令使用,可以提供信息汇总功能(与"小计"相似)
示例如下:
SQL> select job,deptno,sal from emp;
JOB DEPTNO SAL
--------- --------- ---------
CLERK 20 800
SALESMAN 30 1600
SALESMAN 30 1250
MANAGER 20 2975
SALESMAN 30 1250
MANAGER 30 2850
MANAGER 10 2450
ANALYST 20 3000
PRESIDENT 10 5000
SALESMAN 30 1500
CLERK 20 1100
CLERK 30 950
ANALYST 20 3000
CLERK 10 1300
已选择14行。
SQL> select job,deptno,sum(sal) total_sal from emp group by rollup(job,deptno);
JOB DEPTNO TOTAL_SAL
--------- --------- ---------
ANALYST 20 6000
ANALYST 6000
CLERK 10 1300
CLERK 20 1900
CLERK 30 950
CLERK 4150
MANAGER 10 2450
MANAGER 20 2975
MANAGER 30 2850
MANAGER 8275
PRESIDENT 10 5000
PRESIDENT 5000
SALESMAN 30 5600
SALESMAN 5600
29025
已选择15行。
SQL>
--------------------------------------------------------------------------------
可以看出,
用了rollup的group by子句所产生的所谓的超级聚合就是指在在产生聚合时会从右向左逐个对每一列进行小结,并在结果中生成独立的一行,同时也会对聚合列生成一个合计列。
例如在scott用户下面有一个emp表:
select deptno,job,sum(sal) from emp group by deptno,job;
会对每一个不同的dept,job生成一行独立的结果。
而
select deptno,job,sum(sal) from emp group by rollup(deptno,job);
的结果中除了上述的结果结果之外,还会对每一个deptno进行一个小结,并单独生成一行,除此之外还会对所有的sal求和并生成一列。
这里的group by后面我们仅仅接了2列,实际上我们可以使用更多列的,这样的话oracle就会以从右向左的方式来进行逐个小结。
这里需要注意的是是使用了group by和rollup后,其后面的列要用括号括起来,否则将会出现ORA-00933: SQL 命令未正确结束的错误。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhaozhongju/archive/2009/05/13/4177358.aspx
分享到:
相关推荐
本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select * from scott.dept; create table emp as select * from ...
### Group By 后使用 Rollup 子句的理解与应用 #### 一、Rollup 子句的基本概念 在 SQL 查询语言中,`GROUP BY` 语句被广泛应用于对数据进行分组处理,以便能够更好地汇总和分析数据。而在 `GROUP BY` 语句后加上 ...
### SQL语句中Group BY 和Rollup以及Cube用法 #### Group BY 子句 `GROUP BY`子句是SQL查询中的一个非常重要的部分,它用于将数据表中的行按照一个或多个列进行分组,使得可以对每个分组执行聚合函数(如SUM、...
「GROUP BY 与 ROLLUP 子句的使用」 `GROUP BY` 语句是 SQL 中一种常用的语句,用来对查询结果进行分组并进行聚合操作。但是,如果我们想要对分组结果进行汇总统计时,使用 `ROLLUP` 子句可以实现这一功能。 ...
SQL Server中的用法为group by colomn with [rollup|cube],首先要弄明白rollup 和cube,就要知道group by的用法,group by 为对列进行分组,只展现分组统计的值,而 rollup 为分层次展现,cube 为展现列中所有层次...
为了在报表中添加总计行,我们可以使用`GROUP BY ROLLUP`: ```sql SELECT ACCESSIONSTATE, COUNT(*) AS num FROM PSNACCOUNT GROUP BY ROLLUP (ACCESSIONSTATE); ``` 使用了`ROLLUP`之后,查询结果不仅包含了每个...
在 Oracle 中,ROLLUP 子句可以与 GROUP BY 子句配合使用,以便对数据进行分组和聚合。ROLLUP 子句可以指定一个或多个字段,用于对数据进行分组和聚合。 例如,以下是对 grade 字段进行 rollup 的示例: SQL> ...
而在GROUP BY的基础上,Oracle数据库提供了两种高级分组功能:ROLLUP和CUBE,它们允许我们更灵活地生成汇总数据。 1. 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 语句是最基本的分组语句,它可以根据...
在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...
ROLLUP操作是GROUP BY的一个扩展,它允许你生成一个包含不同层次的分组结果,从最细粒度的分组到最粗粒度的分组,类似于数据透视表的逐级展开。例如,如果你有一个按地区、城市和部门分组的数据集,使用ROLLUP可以...
优化 Group By 查询速度的实践经验 在实际项目中,遇到了表数据量大导致查询速度很慢的问题。通过记录和优化过程,总结出一些有价值的经验,希望能够帮助读者解决类似的问题。 知识点1:Group By 查询的索引设置 ...
- **使用CUBE、ROLLUP或GROUPING SETS**:这些高级的`GROUP BY`选项可以帮助生成更复杂的汇总数据,例如交叉总计或立方体。 总的来说,`GROUP BY`语句是数据分析和报告的重要工具,理解其工作原理和优化方法对于...
2. `GROUP BY`:这是用于分组数据的关键字,常与聚合函数(如SUM、COUNT、AVG等)一起使用。当你需要根据某个字段的值对数据进行分类并计算每个类别的总和、平均值等时,就会用到`GROUP BY`。例如,`SELECT ...
4. **ROLLUP操作**: 使用`WITH ROLLUP`可以添加汇总行,例如`SELECT CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping' FROM Products GROUP BY CategoryID WITH ROLLUP`。`GROUPING`函数标识哪一行...
### ORACLE报表分析利剑——分析函数:深度解析与应用 #### 一、理解分析函数:数据统计的新维度 分析函数作为Oracle数据库中一项高级功能,专为解决复杂报表统计需求设计,其核心优势在于能够对数据进行精细的...
总的来说,`ORDER BY`、`GROUP BY` 和 `HAVING` 是SQL中进行数据组织和分析的关键工具,掌握它们的用法对于高效地处理大数据至关重要。正确地运用这些子句可以帮助我们更好地理解和分析数据,从而做出更明智的决策。
在SQL中,分组查询是通过`GROUP BY`子句来实现的,它可以将数据按照一个或多个列的值进行分组,通常结合聚合函数一起使用,以便对每个分组执行计算。 1. SQL中的分组查询 在SQL中,使用`GROUP BY`语句进行分组操作...