lag與lead函式是跟偏移量相關的兩個分析函式,通過這兩個函式我們可以取到當前行列的偏移n行列的值 lag可以看著是正的向上的偏移 lead可以認為負的向下的偏移 具體我們來看幾個例子:
我們先看下scott的emp表的兩列資料:
select deptno, sal from scott.emp order by deptno
deptno
sal 10
2450.00 10
5000.00 10
1300.00 20
2975.00 20
3000.00 20
1100.00 20
800.00 20
3000.00 30
1250.00 30
1500.00 30
1600.00 30
950.00 30
2850.00 30
1250.00
ok那現在比方我有個這樣的需求(我們只看sal列)我想問你2450的上乙個值是多少?回答是沒有 那5000的上乙個值是多少?是:2450 1300的上乙個值是多少呢?是:5000 ok以此類推我想得到當前值的上乙個值
5000.00
2450
1300.00
5000
2975.00
1300
3000.00
2975
1100.00
3000
... ...
1250.00 2850
ok就這樣的需求 那我們現在用sql應該如何寫呢?是的你猜對了就是用lag分析函式:
select deptno, sal a, lag(sal, 1, sal) b over(order by deptno)
from scott.emp
deptno
a b 10
2450.00
2450 --ps:這裡的之所以是2450是因為lag(sal, 1, sal)我讓它給了他本身的值 10
5000.00
2450 10
1300.00
5000 20
2975.00
1300 20
3000.00
2975 20
1100.00
3000 20
800.00
1100 20
3000.00
800 30
1250.00
3000 30
1500.00
1250 30
1600.00
1500 30
950.00
1600 30
2850.00
950 30
1250.00
2850
是的就這麼簡單你看出a列與b列之間有何聯絡了吧 相對a列b列是她的上乙個值
關於lead她就剛好與lag相反了
select deptno, sal a, lead(sal, 1, sal) over(order by deptno) b
from scott.emp
deptno
a b 10
2450.00
5000 10
5000.00
1300 10
1300.00
2975 20
2975.00
3000 20
3000.00
1100 20
1100.00
800 20
800.00
3000 20
3000.00
1250 30
1250.00
1500 30
1500.00
1600 30
1600.00
950 30
950.00
2850 30
2850.00
1250 30
1250.00
1250
相對a列b列是她的下乙個值
另外那個偏移值1是可以隨便取的如果是2那就是偏移兩個值了
select deptno, sal a, lag(sal, 2,null) over(order by deptno) b
from scott.emp
deptno
a b
10 2450.00
--注意這裡是null空了 10
5000.00
10 1300.00
2450 --a列1300的上兩個值是多少?2450是吧 20
2975.00
5000 20
3000.00
1300 20
1100.00
2975 20
800.00
3000 20
3000.00
1100 30
1250.00
800 30
1500.00
3000 30
1600.00
1250 30
950.00
1500 30
2850.00
1600 30
1250.00
950
ok 那其實lag,lead還可以加上分組偏移的
select deptno,
sal a,
lag(sal, 1, null) over(
partition by deptno order by deptno) b
from scott.emp
deptno
a b 10
2450.00
10 5000.00
2450 10
1300.00
5000 20
2975.00
20 3000.00
2975 20
1100.00
3000 20
800.00
1100 20
3000.00
800 30
1250.00
30 1500.00
1250 30
1600.00
1500 30
950.00
1600 30
2850.00
950 30
1250.00
2850
注意deptno不同的分組間的臨界值你看明白了吧
**:
oracle lag與lead分析函式簡介
lag與lead函式是跟偏移量相關的兩個分析函式,通過這兩個函式我們可以取到當前行列的偏移n行列的值 lag可以看著是正的向上的偏移 lead可以認為負的向下的偏移 具體我們來看幾個例子 我們先看下scott的emp表的兩列資料 select deptno,sal from scott.emp or...
七分與三分
田力合為男,女子合為好。男人 難人也 女人 亦好人!七畫是 男 三畫是 女 七 加 三 才是十全十美。於是,男人拿走七分權利,女人只有三分的反抗!體力上男人是七,女人是三。但耐力上女人是七,男人是三。所以面對情敵 男人們通常都是短兵相接,武力解決 女人則更喜歡明徵暗鬥的拉鋸戰!男人們聊天,七分談理想...
二分與三分
其實二分,三分與分治的思想差不多,都是對乙個問題的分段操作 前提為有序 qwq 二分法,在乙個單調有序的集合或函式中查詢乙個解,每次分為左右兩部分,判斷解在哪個部分中並調整上下界,直到找到目標元素,每次二分後都將捨棄一半的查詢空間,因此效率很高。例如,對於在實數區間 l,r 內遞增的連續函式f x ...