【语法】

lag(EXPR,<OFFSET>,<DEFAULT>)

LEAD(EXPR,<OFFSET>,<DEFAULT>)

【功能】表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的)

lead () 下一个值 lag() 上一个值

【参数】

EXPR是从其他行返回的表达式

OFFSET是缺省为1 的正数,表示相对行数。希望检索的当前行分区的偏移量

DEFAULT是在OFFSET表示的数目超出了分组的范围时返回的值。

【说明】Oracle分析函数

【示例】

-- Create table

create table LEAD_TABLE

(

CASEID VARCHAR2(10),

STEPID VARCHAR2(10),

ACTIONDATE DATE

)

tablespace COLM_DATA

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

);

insert into LEAD_TABLE values('Case1','Step1',to_date('20070101','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case1','Step2',to_date('20070102','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case1','Step3',to_date('20070103','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case1','Step4',to_date('20070104','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case1','Step5',to_date('20070105','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case1','Step4',to_date('20070106','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case1','Step6',to_date('20070101','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case1','Step1',to_date('20070201','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case2','Step2',to_date('20070202','yyyy-mm-dd'));

insert into LEAD_TABLE values('Case2','Step3',to_date('20070203','yyyy-mm-dd'));

commit;

结果如下:

Case1 Step1 2007-1-1 Step2 2007-1-2

Case1 Step2 2007-1-2 Step3 2007-1-3 Step1 2007-1-1

Case1 Step3 2007-1-3 Step4 2007-1-4 Step2 2007-1-2

Case1 Step4 2007-1-4 Step5 2007-1-5 Step3 2007-1-3

Case1 Step5 2007-1-5 Step4 2007-1-6 Step4 2007-1-4

Case1 Step4 2007-1-6 Step6 2007-1-7 Step5 2007-1-5

Case1 Step6 2007-1-7 Step4 2007-1-6

Case2 Step1 2007-2-1 Step2 2007-2-2

Case2 Step2 2007-2-2 Step3 2007-2-3 Step1 2007-2-1

Case2 Step3 2007-2-3 Step2 2007-2-2

还可以进一步统计一下两者的相差天数

select caseid,stepid,actiondate,nextactiondate,nextactiondate-actiondate datebetween from (

select caseid,stepid,actiondate,lead(stepid) over (partition by caseid order by actiondate) nextstepid,

lead(actiondate) over (partition by caseid order by actiondate) nextactiondate,

lag(stepid) over (partition by caseid order by actiondate) prestepid,

lag(actiondate) over (partition by caseid order by actiondate) preactiondate

from lead_table)

结果如下:

Case1 Step1 2007-1-1 2007-1-2 1

Case1 Step2 2007-1-2 2007-1-3 1

Case1 Step3 2007-1-3 2007-1-4 1

Case1 Step4 2007-1-4 2007-1-5 1

Case1 Step5 2007-1-5 2007-1-6 1

Case1 Step4 2007-1-6 2007-1-7 1

Case1 Step6 2007-1-7

Case2 Step1 2007-2-1 2007-2-2 1

Case2 Step2 2007-2-2 2007-2-3 1

Case2 Step3 2007-2-3

每一条记录都能连接到上/下一行的内容

lead () 下一个值 lag() 上一个值

select caseid,stepid,actiondate,lead(stepid) over (partition by caseid order by actiondate) nextstepid,

lead(actiondate) over (partition by caseid order by actiondate) nextactiondate,

lag(stepid) over (partition by caseid order by actiondate) prestepid,

lag(actiondate) over (partition by caseid order by actiondate) preactiondate

from lead_table

oracle函数 lag()和lead()的更多相关文章

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

    LAG()和LEAD()统计函数能够在一次查询中取出同一字段的前N行的数据和后N行的值.这样的操作能够使用对同样表的表连接来实现,只是使用LAG和 LEAD有更高的效率.下面整理的LAG()和LEAD ...

  2. oracle中LAG()和LEAD()以及over (PARTITION BY)

    LAG()和LEAD()统计函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和 LEAD有更高的效率.以下整理的LAG()和LEAD( ...

  3. Oracle下lag和lead分析函数

    [转自] http://blog.csdn.net/thinkscape/article/details/8290894 Lead和Lag分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag) ...

  4. (014)每日SQL学习:oracle下lag和lead分析函数

    /*语法*/ lag(exp_str,offset,defval) over() Lead(exp_str,offset,defval) over() --exp_str要取的列 --offset取偏 ...

  5. ORACLE lag()与lead() 函数

    一.简介 lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤.这种 ...

  6. oracle lag与lead分析函数简介

    lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数我们可以取到当前行列的偏移N行列的值 lag可以看着是正的向上的偏移 lead可以认为负的向下的偏移 具体我们来看几个例子: 我们先看下 ...

  7. pandas实现hive的lag和lead函数 以及 first_value和last_value函数

    lag和lead VS shift 该函数的格式如下: 第一个参数为列名, 第二个参数为往上第n行(可选,默认为1), 第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL ...

  8. KingbaseES lag 和 lead 函数

    1.简介 lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤. 2 ...

  9. Oracle 分析函数之 lag和lead

    Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列. 这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率. /*语法*/   ...

随机推荐

  1. Sublime keymap 个性修改

    [ // 保存全部 {"keys": ["ctrl+alt+s"], "command": "save_all"}, / ...

  2. android 复制到剪切板

    The Clipboard Framework 当使用clipboard framework时,把数据放在一个剪切对象(clip object)里,然后这个对象会放在系统的剪贴板里. clip obj ...

  3. neo4j遍历和图算法

    阅读更多 这篇blog主要和大家分享一下neo4j中是如何对节点进行遍历,和其中集成的图论的一些常用算法. 遍历 http://docs.neo4j.org.cn/tutorials-java-emb ...

  4. tp5.1 本地正常, 线上route.php不起作用的问题

    由于本项目 的.htaccess文件是放在根目录的, 上传没有覆盖,重新编辑 <IfModule mod_rewrite.c> Options +FollowSymlinks -Multi ...

  5. webpack 4.X 创建 react项目

    1. 新建一个文件夹2. 运行 npm init -y 快速初始化项目3. 在跟目录创建src文件夹 dist文件夹4. 在src下创建 index.html main.js // index.htm ...

  6. Windows Phpstrom svn 配置

    网上百度找到的解决方案行不通,就是下图两项都不选中.临时是可以的,但是到了第二天,又不行了. 以下是自己瞎弄的,居然可以了. 第一步:安装TortoiseSVN 1.8.* ,注意安装选项要选上com ...

  7. jquery源码学习(二)——jquery中的变量

    jquery在 21-93 行提供了变量 var // A central reference to the root jQuery(document) rootjQuery, // The defe ...

  8. python编写购物车小程序

     #练习#程序购物车#启动程序后,让用户输入工资,  然后打印商品列表,允许用户根据商品编号购买商品用户选择商品后 #检测余额是否够,够就直接扣款,不够就提醒可随时退出,退出时,打印已购买商品和余额  ...

  9. 更新与发展 | Alibaba Cloud Linux 2 特性与开发细节揭秘

    2019 年 4 月,Alibaba Cloud Linux 2 (Aliyun Linux 2) 正式开源.时至今日,已经走过三个月的里程.在这段时间内,这个刚诞生不久的为阿里云 ECS 环境定制优 ...

  10. phpinfo空白

    <?php phpinfo(); ?> 以上代码放入一个kk.php的文件里,但浏览器显示是空白. 原因: 检查php.ini文件里 disable_functions =后面有没有限制p ...