数
最近这个东东用得非凡多,总结了一下 。 语法: FUNCTION_NAME(,,...)
OVER
()
OLAP函数语法四个部分:
1、function本身 用于对窗口中的数据进行操作;
2、partitioning clause 用于将结果集分区;
3、order by clause 用于对分区中的数据进行排序;
4、windowing clause 用于定义function在其上操作的行的集合,即function所影响的范围。 一、order by对窗口的影响
不含order by的:
SQL> select deptno,sal,sum(sal) over()
2 from emp;
不含order by时,默认的窗口是从结果集的第一行直到末尾。
含order by的:
SQL> select deptno,sal,
2 sum(sal) over(order by deptno) as sumsal
3 from emp;
当含有order by时,默认的窗口是从第一行直到当前分组的最后一行。 二、用于排列的函数
SQL> select empno, deptno, sal,
2 rank() over
3 (partition by deptno order by sal desc nulls last) as rank,
4 dense_rank() over
5 (partition by deptno order by sal desc nulls last) as dense_rank,
6 row_number() over
7 (partition by deptno order by sal desc nulls last) as row_number
8 from emp; 三、用于合计的函数
SQL> select deptno,sal,
2 sum(sal) over (partition by deptno) as sumsal,
3 avg(sal) over (partition by deptno) as avgsal,
4 count(*) over (partition by deptno) as count,
5 max(sal) over (partition by deptno) as maxsal
6 from emp; 四、开窗语句 1、rows窗口: "rows 5 preceding" 适用于任何类型而且可以order by多列。 SQL> select deptno,ename,sal,
2 sum(sal) over (order by deptno rows 2 preceding) sumsal
3 from emp; rows 2 preceding:将当前行和它前面的两行划为一个窗口,因此sum函数就作 用在这三行上面
SQL> select deptno,ename,sal,
2 sum(sal) over
3 (partition by deptno order by ename rows 2 preceding) sumsal
4 from emp
5 order by deptno,ename;
加了partiton by分区后之后,rows 2 preceding(窗口)只在当前分区内生效,不会影响分区之外的行。
SQL> select ename,sal,hiredate,
2 first_value(ename)over
3 (order by hiredate asc rows 5 preceding) first_ename,
4 first_value(hiredate) over
5 (order by hiredate asc rows 5 preceding) first_hiredate
6 from emp
7 order by hiredate asc;
order by hiredate asc rows 5 preceding: order by之后,取当前行的前5行 当前行作为窗口(共6行)。
2、"range unbounded preceding" range unbounded preceding会把当前行之前的所有行都包含进来,但当partition by时: SQL> select deptno,ename,sal,
2 sum(sal) over
3 (partition by deptno order by deptno range unbounded preceding) sumsal
4 from emp;
SQL> select deptno,ename,sal,
2 sum(sal) over
3 (order by deptno range unbounded preceding) sumsal
4 from emp;
这SQL句子和下面这SQL是等价的: select deptno,ename,sal,
sum(sal) over (order by deptno) sumsal
转自http://www.mscto.com/Oracle/2009010138636.html
分享到:
相关推荐
Oracle OLAP Expression Syntax Reference Release 11.2-208是Oracle公司发布的一份文档,详细介绍了在Oracle OLAP环境中使用的表达式语法。这份文档对于理解和操作11.2版本的Oracle OLAP至关重要,它涵盖了用户如何...
1. **语法和命令**:文档详细介绍了OLAP DML的语法结构和一系列命令,如定义维度(dimensions)、层次(hierarchies)、成员(members)以及计算(calculations)。这些命令允许用户进行数据建模,创建复杂的多维...
Oracle分析函数的语法通常包括`OVER()`子句,允许指定窗口或分区定义。这种强大的工具使得在复杂的SQL查询中实现数据统计和分析变得简单,减少了对复杂子查询的依赖,提高了性能。例如,`function_name(arg1,arg2,.....
Oracle分析函数是OLAP(在线分析处理)和数据挖掘等领域中不可或缺的工具。 Oracle分析函数简介部分提到,分析函数在OLTP(在线事务处理)和OLAP系统中的应用场景不同。OLTP系统处理实时事务,业务逻辑复杂,而OLAP...
1. **分析函数语法**: 分析函数的基本语法结构如下: ```sql FUNCTION_NAME(,) OVER ( ) ``` - `FUNCTION_NAME` 是分析函数的名称,例如SUM、COUNT等。 - `<argument>` 是分析函数的参数,可以是...
这些函数在在线分析处理(OLAP)环境中特别有用,因为它们能够对数据进行复杂的分析,例如计算累计值、排名或百分比等。分析函数自Oracle 8.1.6版本开始引入,并在后续版本中得到了进一步增强。 分析函数的基本语法...
Oracle分析函数,也称为窗口函数,是一种高级查询技术,主要用于处理复杂的数据分析需求,尤其是在OLAP(在线分析处理)场景中,它们能够对数据进行多层次的聚合、排序、比较以及过滤操作。分析函数通过其独特的特性...
Oracle分析函数,也称为窗口函数,是一种高级查询技术,主要用于处理复杂的数据分析需求,尤其是在OLAP(在线分析处理)环境中。与传统的SQL函数不同,分析函数可以在一组行上执行计算,而不仅仅是在单行上。这使得...
分析函数的语法结构通常包括函数名、参数以及OVER子句,其中OVER子句可包含分区子句、排序子句和窗口子句,用于定义分析函数的操作范围和顺序。 使用Oracle分析函数可以显著简化复杂查询的编写,提高查询效率,对于...
5. **OLAP函数** OLAP(在线分析处理)函数用于复杂的分析操作,例如分析层次结构数据。窗口函数如LEAD和LAG可以查看当前行的前后行数据,RANK和DENSE_RANK用于行排序,ROW_NUMBER分配唯一的行号。 6. **时间区...
(1) 高度兼容 MySQL:TiDB 支持 MySQL 的大部分语法和函数,使得从 MySQL 迁移到 TiDB 变得容易。 (2) 水平弹性扩展:TiDB 采用无中心的设计,可以方便地添加或减少节点,实现存储和计算资源的水平扩展。 (3) ...
PL/SQL是Oracle特有的过程化语言,结合了SQL的功能,用于编写存储过程、函数、触发器等数据库编程元素。 3. **表和索引**: 表是数据的基本存储单元,由列和行组成。索引可以显著提高查询速度,有B树索引、位图...
2. **SQL语言**:掌握Oracle SQL的语法,包括数据查询、数据插入、更新、删除,以及复杂的联接操作、子查询和集合操作。同时,了解PL/SQL编程,如过程、函数、触发器和游标的应用。 3. **表和索引**:学习如何创建...
- **数据仓库与OLAP**:讨论数据仓库的设计和Oracle的OLAP特性。 2. **oracle9i_rac_concepts.pdf**: Oracle Real Application Clusters (RAC) 是Oracle的高可用性解决方案,允许多台服务器共享同一个数据库实例...
1.2.1 索引的创建语法:Oracle中创建索引的语法通常使用CREATE INDEX语句,包括索引名、表名以及索引键等信息。 1.2.2 索引特点:索引能加速数据的检索速度,但同时也会增加存储空间的需求,且当表更新时,索引也...