Oracle 使用LAG和LEAD函式統計

2021-04-27 11:44:53 字數 1456 閱讀 7608

lag

和lead

函式可以在一次查詢中取出同一欄位的前

n行的資料和後

n行的值。這種操作可以使用對相同表的表連線來實現,不過使用

lag和

lead

有更高的效率。以下是

lag和

lead

的例子:

sql> selectyear,region,profit ,lag (profit,1) over(order by year)

2as last_year_exp from test;

year regionprofit last_year_exp

---- ------- ---------- -------------

2003 west88

2003 west8888

2003 central10188

2003 central100101

2003 east102100

2004 west77102

2004 east10377

2004 west89103

sql> selectyear,region,profit ,lead (profit,1) over(order by year)

2as next_year_exp from test;

year regionprofit next_year_exp

---- ------- ---------- -------------

2003 west8888

2003 west88101

2003 central101100

2003 central100102

2003 east10277

2004 west77103

2004 east10389

2004 west89

lag函式為lag(exp,n,defval),defval是當該函式無值可用的情況下返回的值。lead函式的用法類似。

lead

和lag函式也可以使用分組,以下是使用region分組的例子:

sql> selectyear,region,profit ,

2lag (profit,1,0) over(partition by region order by year)

3as last_year_exp from test;

year regionprofit last_year_exp

---- ------- ---------- -------------

2003 central1010

2003 central100101

2003 east1020

2004 east103102

2003 west

880

2003 west8888

2004 west7788

2004 west8977

SQL中lag 和lead 函式使用

首先我們建立乙個表user info表 create table user info user id number 11 primary key,user name varchar2 14 user age number 4 user birthday date 插入一些資料用於測試,如下 測試資料...

LAG和LEAD函式統計

lag和lead函式可以在一次查詢中取出同一欄位的前n行的資料和後n行的值。這種操作可以使用對相同表的表連線來實現,不過使用lag和lead有更高的效率。lead 語法結構 lead value expr offset default over query partition clause orde...

LEA指令和OFFSET指令

lea 是機器指令,offset 是偽指令。lea bx,buffer 在實際執行時才會將變數buffer的位址放入bx mov bx,offset buffer 在編譯時就已經計算出buffer的位址為4300 假設 然後將上句替換為 mov bx,4300 lea可以進行比較複雜的計算,比如le...