`

Oracle LAG 和 LEAD 函数

阅读更多

LAG 是取前N行的数据

LEAD是取后去N行数据

 

语法:

    LAG(exp_str,offset,defval)over()

    LEAD(exp_str,offset,defval)over()

    --exp_str 要取的列

    --offset 取偏移后的第几行数据

    --defval 没有符合条件的默认值

    eg.

droptable tabA;

createtable tabA(colA number);

insertinto tabA values(1);

insertinto tabA values(2);

insertinto tabA values(4);

insertinto tabA values(8);

insertinto tabA values(16);

insertinto tabA values(32);

insertinto tabA values(64);

 

select

  colA c1,

  lag(colA,1,0)over(orderbyrownum) c2,

  lag(colA,2,99)over(orderbyrownum) c3,         ---99位默认值

  lead(colA,1,0)over(orderbyrownum) c4,         ---Lead是向下偏移的意思

  colA-lag(colA,1,0)over(orderbyrownum) c5

from tabA;

 

   C1  C2  C3  C4  C5

1   1   0   99  2   1

2   2   1   99  4   1

3   4   2   1   8   2

4   8   4   2   16  4

5   16  8   4   32  8

6   32  16  8   64  16

7   64  32  16  0   32

 

 

select

  colA c1,

  lag(colA,1,0)over(orderbyrownum) c2,

  lag(colA,2,99)over(orderbyrownum) c3,

  lead(colA,1,0)over(orderbyrownumdesc) c4,   ----------如果此处有desc,则以这个为倒序的顺序,

  colA-lag(colA,1,0)over(orderbyrownum) c5

from tabA;

 

   C1  C2  C3  C4  C5

1   64  32  16  32  32

2   32  16  8   16  16

3   16  8   4   8   8

4   8   4   2   4   4

5   4   2   1   2   2

6   2   1   99  1   1

7   1   0   99  0   1

 

 

 

 

分享到:
评论

相关推荐

    oracle求同比,环比函数(LAG与LEAD)的详解

    Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。 代码如下:CREATE TABLE salaryByMonth( employeeNo varchar2(20)...

    Oracle 分析函数.doc

    Oracle 分析函数详解 1. 自动汇总函数rollup,cube, 2. rank 函数, rank,dense_rank,row_number 3. lag,lead函数 4. sum,avg,的移动增加,移动平均数 5. ratio_to_report报表处理函数 6. first,last取基数的分析函数

    Oracle分析函数

    Oracle分析函数——函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算一个组和数据窗口内表达式的...

    mysql实现LAG函数.pdf

    最近工作中用到 Mysql 要实现 oracle 的 lag 函数,网络上搜了不少文章,大都格式不清晰,或说明不清楚,所以自己做出例子来留个记录同时也分享一下。注解清晰,代码可直接用,建表样例数据sql都完整,直接可以跑。

    oracle-10G函数大全.chm

    1,数值型函数(abs()、sign()、ceil()、floor()、power()、exp()、round()...);...6,分析函数(sum(...) over(...)、dense_rank、row_number()、lag()...); 7,其它函数(decode()、nvl()、nvl2()、least()...);

    oracle lag 实现同一字段的前N行的数据和后N行的值

    oracle lag 实现同一字段的前N行的数据和后N行的值.txt

    Oracle分析函数中文+英文【英文非中文的配套】

    1、oracle分析函数 中文: 主要含: rank() 和 dense_rank() first_value()和last_value() row_number() LAG() range开窗函数 2、oracle分析函数 英文: 比较详细

    ORACLE分析函数

    Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法 Oracle分析函数参考手册 开窗函数(over)详解

    Oracle 分析函数的使用.doc

    从论坛搜到的,感觉还不错,整理成了word文档,希望对大家也有用,同时也感谢原作者。...3. lag,lead函数 4. sum,avg,的移动增加,移动平均数 5. ratio_to_report报表处理函数 6. first,last取基数的分析函数

    lead-lag-regress.rar_lead-lag-regress_滞后相关_超前滞后_超前滞后matlab_超前滞后相

    原创的matlab小程序,用于计算超前滞后相关,自带检验线,月资料和年资料都可以。

    利用Oracle解析函数快速检查序列间隙

    Oracle的解析函数为检查间隙提供了一种要快捷得多的方法。它们使你在使用完整的、面向集合的SQL处理的同时,仍然能够看到下一个行(LEAD)或者前一行(LAG)的数值。文中介绍了Oracle解析函数的格式。

    Oracle查询中OVER (PARTITION BY ..)用法

    主要介绍了Oracle查询中OVER (PARTITION BY ..)用法,内容和代码大家参考一下。

    Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

    是第3名 LAG 表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 NULL BTW: EXPERT ONE ON ONE 上讲的最详细,还有很多相关特性,文档看起来比较费劲 row_number()和rownum差不多,功能更强一点...

    Oracle开发之窗口函数

    本文主要介绍Oracle窗口函数的用法,讲解全统计、滚动统计(累积/均值)、根据时间范围统计、first_value/last_value、比较相邻记录具体的使用方法,需要的朋友可以参考下。

    SQL中窗口函数的使用

    本文章通过图文形式介绍了常用的取值窗口函数和排名窗口函数。 取值窗口函数:lag和lead函数不支持动态的窗口大小,而是以整个分区(PARTITION BY)作为分析的窗口。 排名窗口函数不支持动态的窗口大小,而是以整个...

    SqlServer2012中LEAD函数简单分析

    SQL SERVER 2012 T-SQL新增几个聚合函数: FIRST_VALUE LAST_VALUE LEAD LAG,今天我们首先来简单分析下LEAD,希望对大家有所帮助,能够尽快熟悉这个聚合函数

    Oracle开发之分析函数总结

    本文是对Oracle中分析函数做的总结,主要总结了前几篇关于分析函数、窗口函数、报表函数文章的内容,需要的朋友可以参考下。

Global site tag (gtag.js) - Google Analytics