oracle lag與lead分析函式簡介

2022-03-14 02:47:07 字數 1005 閱讀 3417

lag與lead函式是跟偏移量相關的兩個分析函式,通過這兩個函式我們可以取到當前行列的偏移n行列的值 lag可以看著是正的向上的偏移 lead可以認為負的向下的偏移 具體我們來看幾個例子:

我們先看下scott的emp表的兩列資料:

select deptno, sal from scott.emp order by deptno

ok那現在比方我有個這樣的需求(我們只看sal列)我想問你2450的上乙個值是多少?回答是沒有 那5000的上乙個值是多少?是:2450 1300的上乙個值是多少呢?是:5000 ok以此類推我想得到當前值的上乙個值

...       ...

1250.00   2850

ok就這樣的需求 那我們現在用sql應該如何寫呢?是的你猜對了就是用lag分析函式:

select deptno, sal a, lag(sal, 1, sal) b over(order by deptno)

from scott.emp

是的就這麼簡單你看出a列與b列之間有何聯絡了吧 相對a列b列是她的上乙個值

關於lead她就剛好與lag相反了

select deptno, sal a, lead(sal, 1, sal) over(order by deptno) b

from scott.emp

相對a列b列是她的下乙個值

另外那個偏移值1是可以隨便取的如果是2那就是偏移兩個值了

select deptno, sal a, lag(sal, 2,null) over(order by deptno) b

from scott.emp

ok 那其實lag,lead還可以加上分組偏移的

select deptno,

sal a,

lag(sal, 1, null) over(partition by deptno order by deptno) b

from scott.emp

1020

30注意deptno不同的分組間的臨界值你看明白了吧

oracle lag與lead分析函式簡介

lag與lead函式是跟偏移量相關的兩個分析函式,通過這兩個函式我們可以取到當前行列的偏移n行列的值 lag可以看著是正的向上的偏移 lead可以認為負的向下的偏移 具體我們來看幾個例子 我們先看下scott的emp表的兩列資料 select deptno,sal from scott.emp or...

七分與三分

田力合為男,女子合為好。男人 難人也 女人 亦好人!七畫是 男 三畫是 女 七 加 三 才是十全十美。於是,男人拿走七分權利,女人只有三分的反抗!體力上男人是七,女人是三。但耐力上女人是七,男人是三。所以面對情敵 男人們通常都是短兵相接,武力解決 女人則更喜歡明徵暗鬥的拉鋸戰!男人們聊天,七分談理想...

二分與三分

其實二分,三分與分治的思想差不多,都是對乙個問題的分段操作 前提為有序 qwq 二分法,在乙個單調有序的集合或函式中查詢乙個解,每次分為左右兩部分,判斷解在哪個部分中並調整上下界,直到找到目標元素,每次二分後都將捨棄一半的查詢空間,因此效率很高。例如,對於在實數區間 l,r 內遞增的連續函式f x ...