oracle 分析函数lag lead

LAG is an analytic function. It provides access to more than one row of a table at the same time without a self join. Given a series of rows returned from a query and a position of the cursor, LAG provides access to a row at a given physical offset prior to that position.

For the optional offset argument, specify an integer that is greater than zero. If you do not specify offset, then its default is 1. The optional default value is returned if the offset goes beyond the scope of the window. If you do not specify default, then its default is null.

{RESPECT | IGNORENULLS determines whether null values of value_expr are included in or eliminated from the calculation. The default is RESPECT NULLS.

You cannot nest analytic functions by using LAG or any other analytic function for value_expr. However, you can use other built-in function expressions for value_expr.

比如有这样一个需求,按员工号排序。显示每个员工的sal的上一个sal是多少。

SELECT empno,ename, sal, LAG(sal,1,sal)  over(ORDER BY empno)AS lastone FROM emp

结果如图

1 7369 SMITH 800.00 800
2 7499 ALLEN 1600.00 800
3 7521 WARD 1250.00 1600
4 7566 JONES 2975.00 1250
5 7654 MARTIN 1250.00 2975
6 7698 BLAKE 2850.00 1250
7 7782 CLARK 2450.00 2850
8 7788 SCOTT 3000.00 2450
9 7839 KING 5000.00 3000
10 7844 TURNER 1500.00 5000
11 7876 ADAMS 1100.00 1500
12 7900 JAMES 950.00 1100
13 7902 FORD 3000.00 950
14 7934 MILLER 1300.00 3000

lead则为下一个,如lag

时间: 2024-08-26 10:50:57

oracle 分析函数lag lead的相关文章

oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)

LAG()和LEAD()统计函数能够在一次查询中取出同一字段的前N行的数据和后N行的值.这样的操作能够使用对同样表的表连接来实现,只是使用LAG和 LEAD有更高的效率.下面整理的LAG()和LEAD()样例: LAG(EXPRESSION,<OFFSET>,<DEFAULT>)SQL> select year,region,profit ,lag (profit,1) over (order by year)  as 51xit_exp from test; YEAR RE

Oracle 分析函数的使用(主要是rollup用法)

分析函数是oracle 8.1.6中就引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的sql语句就可以实现了,而且在执行效率方面也有相当大的提高. 分析函数参考手册:http://xsb.itpub.net/post/419/33028 分析函数的使用方法1. 自动汇总函数rollup,cube,2. rank 函数, rank,dense_rank,row_numbe

Oracle分析函数学习总结

在公司经常会用到oracle分析函数,在统计这块用处很大,特别是复杂的sql查询,我就在这边结合网络一些资料进行了总结,希望可以帮助到大家: Oracle分析函数--函数列表 SUM         :该函数计算组中表达式的累积和 MIN         :在一个组中的数据窗口中查找表达式的最小值 MAX         :在一个组中的数据窗口中查找表达式的最大值 AVG          :用于计算一个组和数据窗口内表达式的平均值. COUNT       :对一组内发生的事情进行累积计数 -

Oracle分析函数Over()

一.Over()分析函数 说明:聚合函数(如sum().max()等)可以计算基于组的某种聚合值,但是聚合函数对于某个组只能返回一行记录.若想对于某组返回多行记录,则需要使用分析函数. 1.rank()/dense_rank over(partition by ... order by ...) 说明:over()在什么条件之上; partition by 按哪个字段划分组: order by 按哪个字段排序: 注意: (1)使用rank()/dense_rank() 时,必须要带order b

oracle分析函数 (转)

一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> <WINDOWING子句>) PARTITION子句 ORDER BY子句 WINDOWING子句 缺省时相当于RANGE UNBOUNDED PRECEDING 1. 值域窗(RANGE

[转]oracle 分析函数over

  oracle 分析函数over 分析函数(OVER) 目录: =============================================== 1.Oracle分析函数简介 2. Oracle分析函数简单实例 3.分析函数OVER解析 一.Oracle分析函数简介: 在日常的生产环境中,我们接触得比较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者至少说对响应的时间多长有一定的要求:其次这些系统的业务逻辑一般比较复

Oracle分析函数(一)

一.总体介绍 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> <WINDOWING子句>) PARTITION子句 ORDER BY子句 WINDOWING子句 缺省时相当于RANGE UNBOUNDED PRECEDING 1. 值域窗(RANGE WINDO

常用Oracle分析函数详解

学习步骤:1. 拥有Oracle EBS demo 环境 或者 PROD 环境2. copy以下代码进 PL/SQL3. 配合解释分析结果4. 如果网页有点乱请复制到TXT中查看 /*假设一个经理代表了一个部门*/SELECT emp.full_name,       emp.salary,       emp.manager_id,       row_number() over(PARTITION BY emp.manager_id ORDER BY emp.salary DESC) row

oracle分析函数技术详解(配上开窗函数over())

一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数和聚合函数的不同之处是什么?普通的聚合函数用group by分组,每个分组返回一个统计值,而分析函数采用partition by分组,并且每组每行都可以返回一个统计值. 分析函数的形式分析函数带有一个开窗函数over(),包含三个分析子句:分组(partition by), 排序(or