濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 深入探討:oracle中row_number() over()分析函數(shù)用法

深入探討:oracle中row_number() over()分析函數(shù)用法

熱門標(biāo)簽:征服眼公司地圖標(biāo)注 外呼線路外顯本地號(hào)碼 人工智能地圖標(biāo)注自己能做嗎 美圖秀秀地圖標(biāo)注 征服者火車站地圖標(biāo)注 word地圖標(biāo)注方向 阿爾巴尼亞地圖標(biāo)注app 百度地圖標(biāo)注素材 開(kāi)封智能外呼系統(tǒng)廠家
row_number()over(partition by col1 order by col2)表示根據(jù)col1分組,在分組內(nèi)部根據(jù)col2排序,而此函數(shù)計(jì)算的值就表示每組內(nèi)部排序后的順序編號(hào)(組內(nèi)連續(xù)的唯一的)。
與rownum的區(qū)別在于:使用rownum進(jìn)行排序的時(shí)候是先對(duì)結(jié)果集加入偽劣rownum然后再進(jìn)行排序,而此函數(shù)在包含排序從句后是先排序再計(jì)算行號(hào)碼。
row_number()和rownum差不多,功能更強(qiáng)一點(diǎn)(可以在各個(gè)分組內(nèi)從1開(kāi)始排序)。
rank()是跳躍排序,有兩個(gè)第二名時(shí)接下來(lái)就是第四名(同樣是在各個(gè)分組內(nèi))
dense_rank()也是連續(xù)排序,有兩個(gè)第二名時(shí)仍然跟著第三名。相比之下row_number是沒(méi)有重復(fù)值的。
oracle 分析函數(shù) row_number(),返回一個(gè)整數(shù)值(>=1);
語(yǔ)法格式:
1.row_number() over (order by col_1[,col_2 ...])
作用:按照col_1[,col_2 ...]排序,返回排序后的結(jié)果集,
此用法有點(diǎn)像rownum,為每一行返回一個(gè)不相同的值:
復(fù)制代碼 代碼如下:

select rownum,ename,job,   
    row_number() over (order by rownum) row_number   
from emp;   
    ROWNUM ENAME      JOB       ROW_NUMBER   
---------- ---------- --------- ----------   
         1 SMITH      CLERK              1   
         2 ALLEN      SALESMAN           2   
         3 WARD       SALESMAN           3   
         4 JONES      MANAGER            4   
         5 MARTIN     SALESMAN           5   
         6 BLAKE      MANAGER            6   
         7 CLARK      MANAGER            7   
         8 SCOTT      ANALYST            8   
         9 KING       PRESIDENT          9   
        10 TURNER     SALESMAN          10   
        11 ADAMS      CLERK             11   
        12 JAMES      CLERK             12   
        13 FORD       ANALYST           13   
        14 MILLER     CLERK             14 

如果沒(méi)有partition by子句, 結(jié)果集將是按照order by 指定的列進(jìn)行排序;
復(fù)制代碼 代碼如下:

with row_number_test as(   
     select 22 a,'twenty two' b from dual union all   
     select 1,'one' from dual union all   
     select 13,'thirteen' from dual union all   
     select 5,'five' from dual union all   
     select 4,'four' from dual)   
select a,b,   
       row_number() over (order by b)   
from row_number_test   
order by a; 

正如我們所期待的,row_number()返回按照b列排序的結(jié)果,
然后再按照a進(jìn)行排序,才得到下面的結(jié)果:
復(fù)制代碼 代碼如下:

A B          ROW_NUMBER()OVER(ORDERBYB)   
-- ---------- --------------------------   
1 one                                 3   
4 four                                2   
5 five                                1   
13 thirteen                            4   
22 twenty two                          5 

2.row_number() over (partition by col_n[,col_m ...] order by col_1[,col_2 ...])
作用:先按照col_n[,col_m ...進(jìn)行分組,
再在每個(gè)分組中按照col_1[,col_2 ...]進(jìn)行排序(升序),
最后返回排好序后的結(jié)果集:
復(fù)制代碼 代碼如下:

with row_number_test as(   
     select 22 a,'twenty two' b,'*' c from dual union all   
     select 1,'one','+' from dual union all   
     select 13,'thirteen','*' from dual union all   
     select 5,'five','+' from dual union all   
     select 4,'four','+' from dual)   
select a,b,   
       row_number() over (partition by c order by b) row_number   
from row_number_test   
order by a; 

這個(gè)例子中,我們先按照c列分組,分為2組('*'組,'+'組),
再按照每個(gè)小組的b列進(jìn)行排序(按字符串首字母的ascii碼排),
最后按照a列排序,得到下面的結(jié)果集:
復(fù)制代碼 代碼如下:

A B          ROW_NUMBER   
-- ---------- ----------   
1 one                 3   
4 four                2   
5 five                1   
13 thirteen            1   
22 twenty two         

您可能感興趣的文章:
  • Oracle開(kāi)發(fā)之分析函數(shù)總結(jié)
  • Oracle開(kāi)發(fā)之分析函數(shù)(Top/Bottom N、First/Last、NTile)
  • Oracle開(kāi)發(fā)之分析函數(shù)(Rank, Dense_rank, row_number)
  • Oracle開(kāi)發(fā)之分析函數(shù)簡(jiǎn)介Over用法
  • Oracle 分析函數(shù)RANK(),ROW_NUMBER(),LAG()等的使用方法
  • 常用Oracle分析函數(shù)大全

標(biāo)簽:葫蘆島 淮南 泰安 六安 宜春 酒泉 孝感 海北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入探討:oracle中row_number() over()分析函數(shù)用法》,本文關(guān)鍵詞  深入,探討,oracle,中,row,number,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《深入探討:oracle中row_number() over()分析函數(shù)用法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于深入探討:oracle中row_number() over()分析函數(shù)用法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    太湖县| 永嘉县| 什邡市| 教育| 鄂托克旗| 天峨县| 即墨市| 林西县| 宽甸| 黔西县| 兴安县| 东乡族自治县| 龙里县| 灵寿县| 新河县| 土默特右旗| 榆中县| 博兴县| 昌都县| 碌曲县| 潼关县| 内江市| 凌源市| 尼勒克县| 南江县| 双桥区| 成都市| 皋兰县| 五河县| 玛多县| 巴彦县| 姜堰市| 新竹县| 宜宾市| 临西县| 十堰市| 河北区| 蚌埠市| 定结县| 瑞安市| 绥中县|