- 浏览: 143639 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (129)
- framework (18)
- Java (25)
- web2.0 (7)
- Oracle (23)
- 框架师 (20)
- design pattern (5)
- j2ee (6)
- 日常问题收集 (51)
- linux (12)
- Oralce优化 (4)
- life (3)
- sqlplus (1)
- sql (2)
- C# (4)
- mysql (9)
- 拿来主义 (12)
- 标签 (0)
- ThinkPHP (1)
- python (1)
- mybatis (2)
- html5 (1)
- jquery (2)
- hadoop (3)
- git (1)
- struts2 (1)
- shiro (1)
- struts (1)
最新评论
-
xiao88xian:
...
jQuery常用经典技巧
/****************** *ROLLUP函数的使用 ******************/ 案例1 需求: × 统计每个部门每个职位的薪水和 × 统计每个部门所有职位的薪水小计 × 统计所有部门所有职位的薪水合计 × 需要显示部门名、职位名和累加后的薪水 --需求1 SELECT D.DNAME, E.JOB, SUM(E.SAL) SUM_SAL FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO GROUP BY D.DNAME, E.JOB UNION ALL --需求2 SELECT D.DNAME, NULL, SUM(E.SAL) SUM_SAL FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO GROUP BY D.DNAME UNION ALL --需求3 SELECT NULL, NULL, SUM(E.SAL) SUM_SAL FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO;
--使用ROLLUP分组 SELECT D.DNAME, E.JOB, SUM(E.SAL) AS SUM_SAL FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO GROUP BY ROLLUP(D.DNAME, E.JOB);
ROLLUP(D.DNAME, E.JOB)的分组过程是: 1)标准分组:GROUP BY (D.DNAME, E.JOB),对每个部门每个职位进行分组 2)从右到左递减:GROUP BY (D.DNAME, NULL),其实这个NULL没有必要使用,这里只是为了 方便分析。这个过程是对上一个级别分组的小计,也就是对每个DNAME值,计算横跨所有 JOB的小计。 3)最后合计:相当于 GROUP BY (NULL,NULL). 上面的ROLLUP只用了两个列,如果有N个列,那么结果就是n+1中group by的组合, 从右到左递减的过程中,下一个分组就是对上一个分组的小计。 另外,在ROLLUP操作是,如果使用HINT:expand_gset_to_union,则优化器会将ROLLUP转为 对应的UNION ALL操作。
案例2 需求 × 计算每个入职时间(年)、部门、职位的标准分组的薪水和; × 计算每个入职时间(年)、部门的所有职位的薪水小计; × 计算每个入职时间(年)的所有部门所有职位的薪水小计。 × 最后合计薪水,显示入职时间(年)、部门名、职位名 SELECT TO_CHAR(E.HIREDATE, ' yyyy') HIRE_YEAR, D.DNAME, E.JOB, SUM(SAL) SUM_SAL FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO GROUP BY ROLLUP(TO_CHAR(E.HIREDATE, ' yyyy'), D.DNAME, E.JOB)
发表评论
-
ORACLE学习系列.1.安装篇 RHEL5.5 64位下安装Oracle 11g 64位安装前置条件的两种方法
2014-08-15 14:04 1139http://www.oracle-base.com/ar ... -
Ubuntu 12.04(32位)安装Oracle 11g(32位)全过程以及几乎所有问题的解决办法
2014-08-06 16:26 830from :http://blog.csdn.net/idb ... -
解决maven仓库中找不到ojdbc驱动的问题
2013-02-21 16:51 887maven仓库中的ojdbc下载需要oracle的官方授权, ... -
MySQL与Oracle的数据迁移注意事项,另附转换工具链接
2013-02-21 15:59 1814将数据从MySQL迁移到Oracle的注意事项 1. 自动 ... -
树结构和它的专用函数SYS_CONNECT_BY_PATH
2012-10-22 21:55 773来至:http://blog.oracle.com.cn/ht ... -
linux下新建oracle数据库实例
2012-10-20 16:33 8851、在Linux服务器的图形界面下,打开一个终端,输入如 ... -
Instance and Databases
2012-10-20 13:42 767实例和数据库的关系,其实真正的世界也有相似的关系 ... -
Oracle Index 学习
2012-10-11 21:58 8381.index需要储存空间和I/O ... -
sqlplus 常用set指令
2012-10-10 20:30 1048set colsep' '; ... -
ORACLE SPOOL 总结
2012-10-10 20:30 745spool常用的设置set colsep' '; ... -
sql loader 导入数据是报错:Oracle修改时间报:ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法
2012-10-10 13:12 2097在学习SQL Loader导入数据的时候,试用SCOT ... -
Linux下监听程序TNS-12543错误解决方法
2012-10-09 21:42 1372转载:http://blog.csdn.net/libi ... -
选择ORACLE,坚持走下去
2012-09-24 08:38 889工作之后感觉 ... -
linux 启动oracle
2012-09-23 10:34 759转载:http://rorom.iteye.com/bl ... -
ORA-01012: not logged on 解决办法
2012-09-16 22:54 1613conn / as sysdba 报错ORA-01012: n ... -
MERGE函数的妙用案例
2012-09-16 16:44 902本文来至《剑破冰山 ... -
Windows 7-64位安装PLSQL-Developer
2012-09-16 16:41 1090WIN7-64位安装PLSQL-Developer步骤以下 ... -
使用Hint时的注意事项
2012-08-03 16:10 971在使用Hint时需要注意的一点是,并非任何时刻Hint都 ... -
hint提示的相关介绍
2012-08-03 16:05 990介绍hint的使用之前先了解RBO和CBOOracle的优化器 ... -
Oracle 中对中文字段进行排序通常有三种方式
2012-07-27 18:24 889Oracle 中对中文字段进行排序通常有三种方式 1) ...
相关推荐
而在GROUP BY的基础上,Oracle数据库提供了两种高级分组功能:ROLLUP和CUBE,它们允许我们更灵活地生成汇总数据。 1. ROLLUP(滚联回溯): ROLLUP是GROUP BY的一个扩展,它不仅返回每个单独的分组结果,还会生成...
相比之下,`ROLLUP` 会按照层次递减的方式生成分组,只包括:`GROUP BY A, B`、`GROUP BY A` 和 `GROUP BY NULL`。 通过这些例子可以看出,`ROLLUP` 和 `CUBE` 都能够提供更丰富的数据分组选项,但在具体应用场景中...
`ROLLUP` 子句可以在 `GROUP BY` 语句中使用,用于对分组结果进行汇总统计。它可以产生多种分组,然后对各个分组进行统计操作。`ROLLUP` 子句返回的结果集可以理解为各个分组所产生的结果集的并集且没有去掉重复数据...
Oracle数据库中的分组函数是数据分析和报表生成的重要工具,它们允许我们对数据进行汇总和聚合。其中,`ROLLUP`函数是一种特殊的分组操作,它提供了多级分组的能力,可以生成汇总数据的不同层次,从最细粒度的分组到...
GROUP BY 子句是 SQL 语言中用于分组数据的关键字,它可以根据一个或多个列对数据进行分组,并对每个分组应用聚合函数,以便计算和输出所需的结果。GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的...
在SQL查询中,我们通常使用`GROUP BY`语句来定义分组,然后使用分组函数对每个分组进行计算。例如,如果我们有一个订单表,可以按客户分组,然后计算每个客户的总销售额。 二、常见Oracle分组函数 1. COUNT():这...
### 使用ROLLUP函数生成报表的小计、合计 在数据库查询操作中,经常需要对数据进行分组统计,并在此基础上进一步生成包含小计和总计的报表。这种需求在人力资源管理系统(如文中提到的eHR系统)以及其他各类业务...
`GROUP BY`子句是SQL查询中的一个非常重要的部分,它用于将数据表中的行按照一个或多个列进行分组,使得可以对每个分组执行聚合函数(如SUM、COUNT、AVG等)。在数据库管理中,当我们需要对某些特定字段的数据进行...
在SQL中,分组查询是通过`GROUP BY`子句来实现的,它可以将数据按照一个或多个列的值进行分组,通常结合聚合函数一起使用,以便对每个分组执行计算。 1. SQL中的分组查询 在SQL中,使用`GROUP BY`语句进行分组操作...
当我们需要更复杂的分组和汇总信息时,可以使用扩展的聚合功能,如ROLLUP、CUBE以及GROUPING()和GROUPING_ID()函数。这些功能允许我们生成多层次的总计和小计,为数据分析提供了极大的灵活性。 1. ROLLUP子句: ...
ROLLUP操作是GROUP BY的一个扩展,它允许你生成一个包含不同层次的分组结果,从最细粒度的分组到最粗粒度的分组,类似于数据透视表的逐级展开。例如,如果你有一个按地区、城市和部门分组的数据集,使用ROLLUP可以...
而在`GROUP BY`的基础上,`CUBE`和`ROLLUP`两个关键词则提供了一种更加灵活的数据分组方式,可以生成不同层次级别的汇总结果。 #### 一、Cube的理解 `CUBE`是SQL中的一个扩展关键字,它可以生成所有可能的分组组合...
在标准的`GROUP BY` 语句中,我们指定一列或多列进行分组,然后对每个组进行聚合函数(如`SUM`,`COUNT`,`AVG`等)的操作。但当使用`ROLLUP` 时,它会生成所有可能的分组组合,包括原始的`GROUP BY` 列及其子集。 ...
在 Oracle 中,ROLLUP 子句可以与 GROUP BY 子句配合使用,以便对数据进行分组和聚合。ROLLUP 子句可以指定一个或多个字段,用于对数据进行分组和聚合。 例如,以下是对 grade 字段进行 rollup 的示例: SQL> ...
Rollup 是 SQL 中的一种分组函数,它可以生成一个结果集,该结果集不仅包含所有可能的分组组合的结果,还包含所有可能的子集组合的结果。简单来说,Rollup 可以帮助我们生成不同级别的汇总数据,从而实现多维度的...
`GROUP BY` 语句是SQL中用于对数据进行分组的重要工具,通常与聚合函数如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等一起使用。其基本概念是根据一个或多个列的值将数据分为不同的组,然后对每个组应用聚合函数以得出每...
`ROLLUP`是一个分组函数,它能够生成所有可能的子集汇总,通常与`GROUP BY`语句一起使用。当我们在查询中使用`ROLLUP`时,它会按照指定的列进行分组,并且还会返回每一级的汇总结果。下面通过具体的例子来详细了解`...
- `GROUP BY ROLLUP`用于创建分组的层次结构,提供汇总数据。 - `GROUP BY CUBE`创建所有可能的组合,包括空组。 - `GROUP BY GROUPING SETS`是`ROLLUP`和`CUBE`的组合,可自定义分组。 了解这些基本规则和用法...
优化 Group By 查询速度的...通过本实例,我们可以总结出一些有价值的经验:在优化 Group By 查询时,需要将聚合函数用到的字段一起设置为联合索引;需要充分测试和分析查询结果;需要遵循一定的思路来优化查询;等等。