成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數據庫中Rank等函數的比較與選擇

數據庫 Oracle
本文我們通過一個實例來對Oracle數據庫中的Rank,Dense_Rank,Row_Number進行比較,通過比較我們可以學習結合具體得情況來使用最合適的函數,接下來就讓我們來一起學習吧。

Oracle數據庫中Rank,Dense_Rank,Row_Number函數有什么樣的區別呢?在實際的應用中我們又該如何去選擇呢?本文結合實例說明了這些。

首先我們先創建一個員工信息表,在查詢分析器中執行以下的代碼:

  1. Create Table EmployeeInfo (CODE Number(3) Not Null,EmployeeName varchar2(15),DepartmentID Number(3),Salary NUMBER(7,2),  
  2.  
  3. Constraint PK_EmployeeInfo Primary Key (CODE)); 

創建完成后,在企業管理其中打開表,錄入一些信息,為了讓大家清楚錄入的內容,錄入完畢后我執行了查詢語句Select * From EMPLOYEEINFO;將員工信息表的內容入下圖所示:

Oracle數據庫中Rank等函數的比較與選擇

現執行SQL語句:

  1. Select EMPLOYEENAME,SALARY,  
  2.  
  3. RANK() OVER (Order By SALARY Desc)  "RANK",  
  4.  
  5. DENSE_RANK() OVER (Order By SALARY Desc ) "DENSE_RANK",  
  6.  
  7. ROW_NUMBER() OVER(Order By SALARY Desc) "ROW_NUMBER"  
  8.  
  9.  From EMPLOYEEINFO 

結果如下:

Oracle數據庫中Rank等函數的比較與選擇

說明:Rank,Dense_rank,Row_number函數為每條記錄產生一個從1開始至N的自然數,N的值可能小于等于記錄的總數。這3個函數的唯一區別在于當碰到相同數據時的排名策略。

①ROW_NUMBER:

Row_number函數返回一個唯一的值,當碰到相同數據時,排名按照記錄集中記錄的順序依次遞增。

②DENSE_RANK:

Dense_rank函數返回一個唯一的值,除非當碰到相同數據時,此時所有相同數據的排名都是一樣的。

③RANK:

Rank函數返回一個唯一的值,除非遇到相同的數據時,此時所有相同數據的排名是一樣的,同時會在***一條相同記錄和下一條不同記錄的排名之間空出排名。

同時也可以分組排序,也就是在Over從句內加入Partition by groupField:

  1. Select DEPARTMENTID,EMPLOYEENAME,SALARY,  
  2.  
  3. RANK() OVER ( Partition By DEPARTMENTID Order By SALARY Desc)  "RANK",  
  4.  
  5. DENSE_RANK() OVER ( Partition By DEPARTMENTID Order By SALARY Desc ) "DENSE_RANK",  
  6.  
  7. ROW_NUMBER() OVER( Partition By DEPARTMENTID Order By SALARY Desc) "ROW_NUMBER"  
  8.  
  9. From EMPLOYEEINFO 

結果如下:

Oracle數據庫中Rank等函數的比較與選擇

現在如果插入一條工資為空的記錄,那么執行上述語句,結果如下:

Oracle數據庫中Rank等函數的比較與選擇

會發現空值的竟然排在了***位,這顯然不是想要的結果。解決的辦法是在Over從句Order By后加上 NULLS Last即:

  1. Select EMPLOYEENAME,SALARY,  
  2.  
  3. RANK() OVER (Order By SALARY Desc  Nulls Last)  "RANK",  
  4.  
  5. DENSE_RANK() OVER (Order By SALARY Desc Nulls Last) "DENSE_RANK",  
  6.  
  7. ROW_NUMBER() OVER(Order By SALARY Desc Nulls Last ) "ROW_NUMBER"  
  8.  
  9. From EMPLOYEEINFO 

結果如下:

Oracle數據庫中Rank等函數的比較與選擇

本文就介紹到這里,如果您想了解更多關于Oracle的內容,可以到我們網站的Oracle頻道:http://database.51cto.com/oracle/,謝謝大家的支持!

【編輯推薦】

  1. C#利用ODP.net連接Oracle數據庫
  2. 利用Sql Server將Excel中的數據導入Oracle
  3. 在存儲過程中連接遠程Oracle數據庫并進行操作
  4. 環境變量導致ASP.Net無法連接Oracle的一個案例
  5. ORACLE數據庫PL/SQL編程之把過程與函數說透
責任編輯:趙鵬 來源: 網易博客
相關推薦

2011-03-18 11:24:07

Oracle 數據庫時間問題

2010-03-31 19:34:03

Oracle數據庫

2010-03-30 17:40:59

Oracle數據庫

2010-04-29 09:35:31

Oracle數據庫

2010-11-15 16:13:24

Oracle數據庫性能

2011-07-22 09:33:15

OracleMySQLPostgreSQL

2021-01-10 15:29:53

開源數據庫數據庫

2010-05-14 17:34:36

MySQL數據庫列值

2010-08-25 15:13:22

DB2Oracle數據庫

2011-08-23 15:16:54

OracleMySQL

2021-10-26 08:00:00

數據庫架構技術

2021-09-02 10:54:39

Pandas函數數據

2009-09-04 09:54:59

數據庫名

2009-07-02 00:00:00

OOPOracle

2011-04-12 10:21:24

Oracle數據庫索引樹

2025-04-08 06:00:00

2010-04-02 17:11:45

Oracle數據庫

2010-04-28 16:37:31

Oracle數據字典

2011-03-11 16:42:51

Oracle數據庫視圖

2010-09-10 16:12:08

sql函數判斷
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品视频观看 | 6080yy精品一区二区三区 | 一区二区在线 | 91精品国产欧美一区二区 | 欧产日产国产精品v | 久久只有精品 | 精品久久成人 | 欧美中文字幕在线 | 久久久久国产一区二区三区 | 久久高清 | 日屁网站 | 亚洲国产精品99久久久久久久久 | 精品在线一区 | 国产精品影视在线观看 | 久久久爽爽爽美女图片 | 黄色免费av| 亚洲一区二区三区在线观看免费 | 日韩一级黄色毛片 | 99久久精品国产毛片 | 91精品国产乱码久久久久久久 | 欧美一极视频 | 久久久久久久久久久久亚洲 | 国产精品福利久久久 | 欧美成人精品一区二区男人看 | 免费在线观看成人 | 欧美亚州 | 天天操天天干天天爽 | 日日操夜夜操视频 | 97精品国产 | 九九天堂网 | 国产日韩av一区二区 | 麻豆av在线免费观看 | 中文字幕在线视频一区二区三区 | 2021天天躁夜夜看 | 中国三级黄色录像 | 精品真实国产乱文在线 | 日韩免费网站 | 中文字幕一区二区三区精彩视频 | 不卡一区 | 青青草原综合久久大伊人精品 | 亚洲综合二区 |