LAG和LEAD函式統計

2021-08-31 02:40:58 字數 1118 閱讀 1163

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

lead :語法結構:

lead(value_expr [,offset][,default]) over([query_partition_clause] order by order_by_clause)

引數說明:

value_expr 值表示式,通常是字段,也可是是表示式。value_expr本身不支援分析函式,也就是lead不支援多層呼叫。

offset 偏移,表示查詢其後第n條記錄, 如果不提供這個引數,就是預設為1;

default 預設值,如果沒有找到。如果沒有設定,且找不到,那麼就返回null;

over  分析函式 (可以簡單地翻譯為在什麼。。。的基礎之上) ;

query_partition_clause  分割槽語句,對結果集合分割槽的語句,是可選的,如果沒有就是所有的乙個分割槽;

order_by_clause 排序語句 必須需要 , 如果沒有order by 子句,就不是「連續」的。

lag:語法結構:

與lead相同

區別是: 表示查詢其第n條記錄。

下面是效果,表裡面的資料如下:

select *

from (select t.id,

lead(t.id, 1) over(order by t.id),

lead(t.id, 2) over(order by t.id),

lead(t.id, 3) over(order by t.id),

lead(t.id, 4) over(order by t.id),

--rank() over(partition by mod(rownum, 5) order by t.id) rk,

rownum rn

from importfield t

order by t.id)

where mod(rn, 5) = 1

查詢的結果:

—eof—

Oracle 使用LAG和LEAD函式統計

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

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