`
zhaolb
  • 浏览: 27974 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle Group By 用法之 —— Rollup

阅读更多
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的基本用法

    本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select * from scott.dept; create table emp as select * from ...

    group by 后 使用 rollup 子句 总结.doc

    ### Group By 后使用 Rollup 子句的理解与应用 #### 一、Rollup 子句的基本概念 在 SQL 查询语言中,`GROUP BY` 语句被广泛应用于对数据进行分组处理,以便能够更好地汇总和分析数据。而在 `GROUP BY` 语句后加上 ...

    SQL语句中Group BY 和Rollup以及cube用法

    ### SQL语句中Group BY 和Rollup以及Cube用法 #### Group BY 子句 `GROUP BY`子句是SQL查询中的一个非常重要的部分,它用于将数据表中的行按照一个或多个列进行分组,使得可以对每个分组执行聚合函数(如SUM、...

    group by后使用rollup子句总结

    「GROUP BY 与 ROLLUP 子句的使用」 `GROUP BY` 语句是 SQL 中一种常用的语句,用来对查询结果进行分组并进行聚合操作。但是,如果我们想要对分组结果进行汇总统计时,使用 `ROLLUP` 子句可以实现这一功能。 ...

    SQL语句中Group BY 和Rollup以及cube用法.txt

    SQL Server中的用法为group by colomn with [rollup|cube],首先要弄明白rollup 和cube,就要知道group by的用法,group by 为对列进行分组,只展现分组统计的值,而 rollup 为分层次展现,cube 为展现列中所有层次...

    使用ROLLUP函数生成报表的小计、合计

    为了在报表中添加总计行,我们可以使用`GROUP BY ROLLUP`: ```sql SELECT ACCESSIONSTATE, COUNT(*) AS num FROM PSNACCOUNT GROUP BY ROLLUP (ACCESSIONSTATE); ``` 使用了`ROLLUP`之后,查询结果不仅包含了每个...

    Oracle的Rollup用法

    在 Oracle 中,ROLLUP 子句可以与 GROUP BY 子句配合使用,以便对数据进行分组和聚合。ROLLUP 子句可以指定一个或多个字段,用于对数据进行分组和聚合。 例如,以下是对 grade 字段进行 rollup 的示例: SQL> ...

    group by分组函数之rollup与cube用法1

    而在GROUP BY的基础上,Oracle数据库提供了两种高级分组功能:ROLLUP和CUBE,它们允许我们更灵活地生成汇总数据。 1. ROLLUP(滚联回溯): ROLLUP是GROUP BY的一个扩展,它不仅返回每个单独的分组结果,还会生成...

    GROUP BY子句(rollup,cube,grouping sets)实例说明

    GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的三种样式:GROUP BY、GROUP BY ROLLUP、GROUP BY CUBE、GROUP BY GROUPING SETS。 1. GROUP BY 语句 GROUP BY 语句是最基本的分组语句,它可以根据...

    Oracle中分组查询group by用法规则详解

    在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...

    Oracle ROLLUP和CUBE 用法

    ROLLUP操作是GROUP BY的一个扩展,它允许你生成一个包含不同层次的分组结果,从最细粒度的分组到最粗粒度的分组,类似于数据透视表的逐级展开。例如,如果你有一个按地区、城市和部门分组的数据集,使用ROLLUP可以...

    处理group by 查询速度太慢的问题 数据量大.doc

    优化 Group By 查询速度的实践经验 在实际项目中,遇到了表数据量大导致查询速度很慢的问题。通过记录和优化过程,总结出一些有价值的经验,希望能够帮助读者解决类似的问题。 知识点1:Group By 查询的索引设置 ...

    oracle group by语句实例测试

    - **使用CUBE、ROLLUP或GROUPING SETS**:这些高级的`GROUP BY`选项可以帮助生成更复杂的汇总数据,例如交叉总计或立方体。 总的来说,`GROUP BY`语句是数据分析和报告的重要工具,理解其工作原理和优化方法对于...

    order_by_、group_by_、having的用法

    2. `GROUP BY`:这是用于分组数据的关键字,常与聚合函数(如SUM、COUNT、AVG等)一起使用。当你需要根据某个字段的值对数据进行分类并计算每个类别的总和、平均值等时,就会用到`GROUP BY`。例如,`SELECT ...

    group by用法.doc

    4. **ROLLUP操作**: 使用`WITH ROLLUP`可以添加汇总行,例如`SELECT CategoryID, SUM(UnitPrice), GROUPING(CategoryID) AS 'Grouping' FROM Products GROUP BY CategoryID WITH ROLLUP`。`GROUPING`函数标识哪一行...

    ORACLE报表分析利剑——分析函数

    ### ORACLE报表分析利剑——分析函数:深度解析与应用 #### 一、理解分析函数:数据统计的新维度 分析函数作为Oracle数据库中一项高级功能,专为解决复杂报表统计需求设计,其核心优势在于能够对数据进行精细的...

    order by 、group by 、having的用法

    总的来说,`ORDER BY`、`GROUP BY` 和 `HAVING` 是SQL中进行数据组织和分析的关键工具,掌握它们的用法对于高效地处理大数据至关重要。正确地运用这些子句可以帮助我们更好地理解和分析数据,从而做出更明智的决策。

    Sequelize中用group by进行分组聚合查询

    在SQL中,分组查询是通过`GROUP BY`子句来实现的,它可以将数据按照一个或多个列的值进行分组,通常结合聚合函数一起使用,以便对每个分组执行计算。 1. SQL中的分组查询 在SQL中,使用`GROUP BY`语句进行分组操作...

Global site tag (gtag.js) - Google Analytics