主頁(yè) > 知識(shí)庫(kù) > Oracle 分析函數(shù)RANK(),ROW_NUMBER(),LAG()等的使用方法

Oracle 分析函數(shù)RANK(),ROW_NUMBER(),LAG()等的使用方法

熱門標(biāo)簽:北京營(yíng)銷外呼系統(tǒng)廠家 外呼系統(tǒng)鄭州 溫州人工外呼系統(tǒng) 外呼系統(tǒng)口號(hào) 地圖標(biāo)注付款了怎么找不到了 北京外呼系統(tǒng)公司排名 貴陽(yáng)智能電銷機(jī)器人官網(wǎng) 百度地圖標(biāo)注員是干什么 沈陽(yáng)400電話是如何辦理
ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)

表示根據(jù)COL1分組,在分組內(nèi)部根據(jù) COL2排序
而這個(gè)值就表示每組內(nèi)部排序后的順序編號(hào)(組內(nèi)連續(xù)的唯一的)

RANK() 類似,不過RANK 排序的時(shí)候跟派名次一樣,可以并列2個(gè)第一名之后 是第3名

LAG 表示 分組排序后 ,組內(nèi)后面一條記錄減前面一條記錄的差,第一條可返回 NULL

BTW: EXPERT ONE ON ONE 上講的最詳細(xì),還有很多相關(guān)特性,文檔看起來比較費(fèi)勁

row_number()和rownum差不多,功能更強(qiáng)一點(diǎn)(可以在各個(gè)分組內(nèi)從1開時(shí)排序)
rank()是跳躍排序,有兩個(gè)第二名時(shí)接下來就是第四名(同樣是在各個(gè)分組內(nèi))
dense_rank()l是連續(xù)排序,有兩個(gè)第二名時(shí)仍然跟著第三名。
相比之下row_number是沒有重復(fù)值的
lag(arg1,arg2,arg3):
arg1是從其他行返回的表達(dá)式
arg2是希望檢索的當(dāng)前行分區(qū)的偏移量。是一個(gè)正的偏移量,時(shí)一個(gè)往回檢索以前的行的數(shù)目。
arg3是在arg2表示的數(shù)目超出了分組的范圍時(shí)返回的值。


SQL> set pagesize 100;
SQL> select rownum from emp;

ROWNUM
----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14

已選擇14行。

已用時(shí)間: 00: 00: 00.10
SQL> select deptno,row_number() over(partition by deptno order by sal) from emp order by deptno;


DEPTNO ROW_NUMBER()OVER(PARTITIONBYDEPTNOORDERBYSAL)
---------- ---------------------------------------------
10 1
2
3

20 1
2
3
4
5

30 1
2
3
4
5
6


已選擇14行。

已用時(shí)間: 00: 00: 00.41
SQL> select deptno,rank() over (partition by deptno order by sal) from emp order by deptno;

DEPTNO RANK()OVER(PARTITIONBYDEPTNOORDERBYSAL)
---------- ---------------------------------------
10 1
2
3

20 1
2
3
4
4

30 1
2
2
4
5
6


已選擇14行。

已用時(shí)間: 00: 00: 00.21
SQL> select deptno,dense_rank() over(partition by deptno order by sal) from emp order by deptno;

DEPTNO DENSE_RANK()OVER(PARTITIONBYDEPTNOORDERBYSAL)
---------- ---------------------------------------------
10 1
2
3

20 1
2
3
4
4

30 1
2
2
3
4
5


已選擇14行。

已用時(shí)間: 00: 00: 00.20
SQL> select deptno,ename,sal,lag(ename,1,null) over(partition by deptno order by ename) from emp ord
er by deptno;

DEPTNO ENAME SAL LAG(ENAME,
---------- ---------- ---------- ----------
10 CLARK 2450
KING 5000 CLARK
MILLER 1300 KING

20 ADAMS 1100
FORD 3000 ADAMS
JONES 2975 FORD
SCOTT 3000 JONES
SMITH 800 SCOTT

30 ALLEN 1600
BLAKE 2850 ALLEN
JAMES 950 BLAKE
MARTIN 1250 JAMES
TURNER 1500 MARTIN
WARD 1250 TURNER


已選擇14行。

已用時(shí)間: 00: 00: 00.31
SQL> select deptno,ename,sal,lag(ename,2,'example') over(partition by deptno order by ename) from em
p order by deptno;

DEPTNO ENAME SAL LAG(ENAME,
---------- ---------- ---------- ----------
10 CLARK 2450 example
KING 5000 example
MILLER 1300 CLARK

20 ADAMS 1100 example
FORD 3000 example
JONES 2975 ADAMS
SCOTT 3000 FORD
SMITH 800 JONES

30 ALLEN 1600 example
BLAKE 2850 example
JAMES 950 ALLEN
MARTIN 1250 BLAKE
TURNER 1500 JAMES
WARD 1250 MARTIN

已選擇14行。
您可能感興趣的文章:
  • oracle中rownum和row_number()
  • Oracle Number型數(shù)值存儲(chǔ)與轉(zhuǎn)換的實(shí)現(xiàn)詳解
  • Oracle Number型的深入理解
  • oracle to_char函數(shù)將number轉(zhuǎn)成string
  • Oracle row_number() over()解析函數(shù)高效實(shí)現(xiàn)分頁(yè)
  • Oracle數(shù)字類型number自增的實(shí)現(xiàn)代碼

標(biāo)簽:包頭 溫州 淮北 衢州 定西 衡水 通遼 潮州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle 分析函數(shù)RANK(),ROW_NUMBER(),LAG()等的使用方法》,本文關(guān)鍵詞  Oracle,分析,函數(shù),RANK,ROW,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle 分析函數(shù)RANK(),ROW_NUMBER(),LAG()等的使用方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Oracle 分析函數(shù)RANK(),ROW_NUMBER(),LAG()等的使用方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章