Oracle lag()與lead() 函數

來源:互聯網
上載者:User

Oracle lag()與lead() 函數

一、簡介

lag與lead函數是跟位移量相關的兩個分析函數,通過這兩個函數可以在一次查詢中取出同一欄位的前N行的資料(lag)和後N行的資料(lead)作為獨立的列,從而更方便地進行進行資料過濾。這種操作可以代替表的自我聯結,並且LAG和LEAD有更高的效率。

over()表示 lag()與lead()操作的資料都在over()的範圍內,他裡面可以使用partition by 語句(用於分組) order by 語句(用於排序)。partition by a order by b表示以a欄位進行分組,再 以b欄位進行排序,對資料進行查詢。

例如:lead(field, num, defaultvalue) field需要尋找的欄位,num往後尋找的num行的資料,defaultvalue沒有合格預設值。

二、樣本

1、表機構與初始化資料如下

-- 表結構
create table tb_test(
  id varchar2(64) not null,
  cphm varchar2(10) not null,
  create_date date not null,
  primary key (id)
)
-- 初始化資料
insert into tb_test values ('1000001', 'AB7477', to_date('2015-11-30 10:18:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000002', 'AB7477', to_date('2015-11-30 10:22:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000003', 'AB7477', to_date('2015-11-30 10:28:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000004', 'AB7477', to_date('2015-11-30 10:29:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000005', 'AB7477', to_date('2015-11-30 10:39:13','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000006', 'AB7477', to_date('2015-11-30 10:45:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000007', 'AB7477', to_date('2015-11-30 10:56:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000008', 'AB7477', to_date('2015-11-30 10:57:12','YYYY-MM-DD HH24:mi:ss'));
-- ---------------------
insert into tb_test values ('1000009', 'AB3808', to_date('2015-11-30 11:00:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000010', 'AB3808', to_date('2015-11-30 11:10:13','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000011', 'AB3808', to_date('2015-11-30 11:15:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000012', 'AB3808', to_date('2015-11-30 11:26:12','YYYY-MM-DD HH24:mi:ss'));
insert into tb_test values ('1000013', 'AB3808', to_date('2015-11-30 11:30:12','YYYY-MM-DD HH24:mi:ss'));

表初始化資料為:

  

  2、樣本

  a、擷取目前記錄的id,以及下一條記錄的id  

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.