欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年05月30日 09:42:32   作者:  
本篇文章是對oracle中row_number() over()分析函數(shù)的用法進行了詳細的分析介紹,需要的朋友參考下
row_number()over(partition by col1 order by col2)表示根據(jù)col1分組,在分組內部根據(jù)col2排序,而此函數(shù)計算的值就表示每組內部排序后的順序編號(組內連續(xù)的唯一的)。
與rownum的區(qū)別在于:使用rownum進行排序的時候是先對結果集加入偽劣rownum然后再進行排序,而此函數(shù)在包含排序從句后是先排序再計算行號碼。
row_number()和rownum差不多,功能更強一點(可以在各個分組內從1開始排序)。
rank()是跳躍排序,有兩個第二名時接下來就是第四名(同樣是在各個分組內)
dense_rank()也是連續(xù)排序,有兩個第二名時仍然跟著第三名。相比之下row_number是沒有重復值的。
oracle 分析函數(shù) row_number(),返回一個整數(shù)值(>=1);
語法格式:
1.row_number() over (order by col_1[,col_2 ...])
作用:按照col_1[,col_2 ...]排序,返回排序后的結果集,
此用法有點像rownum,為每一行返回一個不相同的值:
復制代碼 代碼如下:

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 

如果沒有partition by子句, 結果集將是按照order by 指定的列進行排序;
復制代碼 代碼如下:

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列排序的結果,
然后再按照a進行排序,才得到下面的結果:
復制代碼 代碼如下:

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 ...進行分組,
再在每個分組中按照col_1[,col_2 ...]進行排序(升序),
最后返回排好序后的結果集:
復制代碼 代碼如下:

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; 

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

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

相關文章

  • ORACLE8的分區(qū)管理

    ORACLE8的分區(qū)管理

    ORACLE8的分區(qū)管理...
    2007-03-03
  • sqlplus 命令登錄 Oracle數(shù)據(jù)庫的多種方法

    sqlplus 命令登錄 Oracle數(shù)據(jù)庫的多種方法

    這篇文章主要介紹了sqlplus 命令登錄 Oracle數(shù)據(jù)庫的兩種方法,方式一通過sql*plus 命令窗口,方式2:通過 cmd 窗口,每種方式給大家介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • ORCAL 臨時創(chuàng)建表與刪除表

    ORCAL 臨時創(chuàng)建表與刪除表

    今天這篇文章就來給大家分享ORCAL 臨時創(chuàng)建表與刪除表的相關資料,如會話級臨時表是指臨時表中的數(shù)據(jù)只在會話生命周期之中存在,當用戶退出會話結束的時候,Oracle自動清除臨時表中數(shù)據(jù)。下面就跟小編一起進入文章學習起來吧
    2021-10-10
  • 對比Oracle臨時表和SQL Server臨時表的不同點

    對比Oracle臨時表和SQL Server臨時表的不同點

    這篇文章主要介紹了Oracle數(shù)據(jù)庫建立臨時表的相關知識以及和SQL Server臨時表的不同點的對比,希望能夠對您有所幫助。
    2015-09-09
  • oracle創(chuàng)建數(shù)據(jù)庫和用戶的方法

    oracle創(chuàng)建數(shù)據(jù)庫和用戶的方法

    這篇文章主要介紹了oracle創(chuàng)建數(shù)據(jù)庫和用戶的方法,mysql和sqlserver創(chuàng)建數(shù)據(jù)庫可以直接通過create database “數(shù)據(jù)庫名”,而oracle創(chuàng)建數(shù)據(jù)庫要對應一個用戶,數(shù)據(jù)庫和用戶一般是一一對應的,下面把oracle創(chuàng)建數(shù)據(jù)庫和用戶的步驟分享給大家。
    2015-07-07
  • oracle中commit之后進行數(shù)據(jù)回滾的方法

    oracle中commit之后進行數(shù)據(jù)回滾的方法

    這篇文章主要介紹了oracle中commit之后如何進行數(shù)據(jù)回滾,本文給大家分享兩種方法,每種方法都給大家介紹的比較詳細,需要的朋友可以參考下
    2021-12-12
  • 檢測oracle數(shù)據(jù)庫壞塊的方法

    檢測oracle數(shù)據(jù)庫壞塊的方法

    這篇文章主要介紹了檢測oracle數(shù)據(jù)庫壞塊的方法 的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-05-05
  • Oracle8i和Microsoft SQL Server比較

    Oracle8i和Microsoft SQL Server比較

    Oracle8i和Microsoft SQL Server比較...
    2007-03-03
  • Oracle 11g數(shù)據(jù)庫詳細安裝圖文教程

    Oracle 11g數(shù)據(jù)庫詳細安裝圖文教程

    這篇文章主要為大家詳細介紹了Oracle 11g數(shù)據(jù)庫詳細安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Oracle插入數(shù)據(jù)時出現(xiàn)ORA-00001:unique?constraint問題

    Oracle插入數(shù)據(jù)時出現(xiàn)ORA-00001:unique?constraint問題

    這篇文章主要介紹了Oracle插入數(shù)據(jù)時出現(xiàn)ORA-00001:unique?constraint問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論