SQL中lag 和lead 函式使用

2021-10-24 17:02:53 字數 1270 閱讀 1237

首先我們建立乙個表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()函式

查詢當前行向上偏移n行對應的結果

該函式有三個引數:第乙個為待查詢的引數列名,第二個為向上偏移的位數,第三個引數為超出最上面邊界的預設值。

看如下**:

查詢向上偏移 1 位的年齡、

select user_id,

user_age,

lag(user_age,1,

0)over

(order

by user_id) result

from user_info;

lag函式執行圖示

lead()函式:

查詢當前行向下偏移n行對應的結果

該函式有三個引數:第乙個為待查詢的引數列名,第二個為向下偏移的位數,第三個引數為超出最下面邊界的預設值。

如下**:

查詢向下偏移 2 位的年齡

select user_id,

user_age,

lead(user_age,2,

0)over

(order

by user_id)

from user_info;

lead()函式圖示

LAG和LEAD函式統計

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

Oracle 使用LAG和LEAD函式統計

lag 和lead 函式可以在一次查詢中取出同一欄位的前 n行的資料和後 n行的值。這種操作可以使用對相同表的表連線來實現,不過使用 lag和 lead 有更高的效率。以下是 lag和 lead 的例子 sql selectyear,region,profit lag profit,1 over o...

取上下行資料分析函式lag 和lead

語法 lag expr,lead expr,功能 表示根據col1分組,在分組內部根據 col2排序,而這個值就表示每組內部排序後的順序編號 組內連續的唯一的 lead 下乙個值 lag 上乙個值 引數 expr是從其他行返回的表示式 offset是預設為1 的正數,表示相對行數。希望檢索的當前行分...