分析函数的使用方法
1. 自动汇总函数rollup,cube,
2. rank 函数, rank,dense_rank,row_number
3. lag,lead函数
4. sum,avg,的移动增加,移动平均数
5. ratio_to_report报表处理函数
6. first,last取基数的分析函数
1、Oracle ROLLUP和CUBE 用法
Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是Group by 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_id()可以美化效果。除了使用GROUPING函数,还可以使用GROUPING_ID来标识GROUP BY的结果。
也可以 Group by Rollup(A,(B,C)) ,Group by A Rollup(B,C),…… 这样任意按自己想要的形式结合统计数据,非常方便。
2、Rank的用法
功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。然而,如果两行的确得到同样的排序,则序数将随后跳跃。若两行序数为1,则没有序数2,序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃。
rank()是跳跃排序,比如有两个第二名时接下来就是第四名(同样是在各个分组内)
dense_rank()l是连续排序,比如有两个第二名时仍然跟着第三名。
3、First的用法
功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
4、Last的用法
功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
5、Lag的用法
功能描述:可以访问结果集中的其它行而不用进行自连接。它允许去处理游标,就好像游标是一个数组一样。在给定组中可参考当前行之前的行,这样就可以从组中与当前行一起选择以前的行。Offset是一个正整数,其默认值为1,若索引超出窗口的范围,就返回默认值(默认返回的是组中第一行),其相反的函数是LEAD。
分享到:
相关推荐
Oracle分析函数是数据库管理系统Oracle中的一个强大特性,它允许用户在SQL查询中执行复杂的分析操作。分析函数在处理报表和数据迁移任务时尤其有用,因为它们可以基于分组计算聚合值,并为每个分组返回多行,而不...
Oracle中的分析函数主要包括以下几类: 1. **排名函数**: - `RANK()`: 返回每个行在分区内的排名,如果有相同的值,会跳过排名。 - `DENSE_RANK()`: 类似于`RANK()`,但不跳过排名,相同值会有相同的排名。 - `...
在进行 Oracle 优化时,需要考虑以下几个方面: * 数据库配置优化:包括内存分配、磁盘分配、网络配置等。 * 索引优化:包括索引的创建、维护和重建。 * 查询优化:包括查询语句的优化、索引的使用、连接顺序的优化...
在提供的内容中,提到了几个重要的分析函数示例: 1. AVG:此函数计算指定窗口内的平均值。例如,在员工表中,如果我们想要计算每个经理的员工平均工资,但要包括当前员工以及相邻的两个员工(如果存在的话),我们...
开窗函数定义了分析函数作用的数据范围,通常包括以下几种类型: 1. **ORDER BY**:根据指定列的值对数据进行排序。 2. **PARTITION BY**:将数据划分成不同的分区,每个分区独立进行计算。 3. **RANGE BETWEEN** ...
在描述中提到的场景中,有几种不同的方法可以实现数据统计,包括通过程序处理、使用临时表和包、标准SQL的UNION以及Oracle特有的分析函数。每种方法都有其优缺点。例如,程序处理方法与数据库无关,但增加了开发工作...
Oracle自8.1.6版本开始引入了分析函数,这类函数主要用于计算基于组的聚合值,并且与传统的聚合函数不同的是,分析函数可以针对每个组返回多行结果,而不仅仅是单一的聚合值。这种特性使得分析函数在数据处理和报表...
分析函数可以分为以下几类: - 排序函数:`RANK()`, `DENSE_RANK()`, `ROW_NUMBER()`,用于为数据行分配唯一的排名。 - 分组函数:如`NTILE()`,将数据行分成等大小或不等大小的组。 - 首尾函数:`FIRST_VALUE...
从给定的文件信息来看,主要讨论的是Oracle 10g R2中的分析函数,这是一种在数据库查询中处理复杂数据汇总需求的高级功能。分析函数允许用户基于一组数据执行复杂的计算,而不仅仅是简单的聚合(如SUM,AVG等),...
### Oracle分析函数详解 #### 一、概述 Oracle分析函数是一种强大的工具,它允许用户对分组数据执行复杂的计算,并且能够返回多个结果行。这与传统的聚合函数(如`SUM`、`COUNT`等)形成鲜明对比,后者通常只针对...
分析函数主要应用于以下几个场景: * 排名前n名记录 * 统计分析 * 数据聚合 * 数据排序 4. 优化分析函数的方法 * 建立合适的索引,可以减少表或索引的访问次数,提高查询效率。 * 使用分析函数可以减少逻辑读取和...
Oracle分析函数是Oracle数据库提供的用于数据分析的一组SQL扩展,它们能够对一组数据执行计算,并返回一组结果,这组结果通常会有一个多行的集合。与聚合函数不同,分析函数不会把多行聚合成单一结果,而是在原有...
另一个分析函数`CORR`则用于计算两个表达式之间的相关系数,这是衡量两个变量之间线性关系强度和方向的指标,其值范围在-1到1之间。0表示没有相关性,1或-1表示完全正相关或负相关。例如,下面的SQL语句展示了1998年...
本篇文章将从以下几个方面对Oracle分析函数进行详细解读: 一、分析函数概述 Oracle分析函数不同于聚合函数(如SUM、AVG、COUNT等),它们可以在单个查询中对分组数据进行计算,而不仅仅是简单地对整个结果集进行...
1. **over()** 关键字:这是识别分析函数的关键,告诉Oracle你将使用一个分析函数。 2. **analytic-function**:这是指定的分析函数,如SUM, AVG, COUNT, RANK等。Oracle提供了多种分析函数,满足不同的需求。 3. **...
Oracle提供了多种类型的分析函数,按功能可分为以下几类: - **等级(ranking)函数**:用于确定行在某个范围内的位置,如RANK、DENSE_RANK等。 - **开窗(windowing)函数**:用于计算不同的累计值,如SUM、COUNT、...
本文将深入探讨其中几个关键的分析函数,包括`RANK()`,`ROW_NUMBER()`以及`LAG()`,并结合`OVER()`子句的使用进行详尽的解释。 首先,`ROW_NUMBER()`函数用于为数据集中的每一行分配一个唯一的整数。这在需要对...
在本篇中,我们将深入探讨几个关键的分析函数,包括AVG、SUM、COUNT、FIRST_VALUE、LAST_VALUE、LAG和LEAD。 1. AVG([DISTINCT|ALL] expr) OVER(analytic_clause) AVG函数用于计算平均值,分为聚合函数和分析函数...
### Oracle分析函数参考手册知识点详解 #### 一、Oracle分析函数概述 Oracle分析函数自8.1.6版本起引入,主要用于对数据进行更复杂的分析处理。与传统的聚合函数(如SUM, AVG等)不同,分析函数能够在分组的基础上...