Sql Server次序函數

來源:互聯網
上載者:User
SQL Server提供了4個次序函數:ROW_NUMBER(), RANK(),DENSE_RANK()和NTILE()。下面通過樣本重點談談這四個函數的使用。資料請查看:http://www.cnblogs.com/icebutterfly/archive/2010/12/06/1897843.html 1、ROW_NUMBER()返回結果集分區內行的序號,每個分區的第一行從 1 開始。ORDER BY 子句可確定在特定分區中為行分配唯一 ROW_NUMBER 的順序。下面的查詢按照數學成績逆序排列:
SELECT  ID,
  ROW_NUMBER() OVER (ORDER BY score DESC) AS 'Number',
  studentid,
  classid,
  courseid,
  score  
FROM StudentScore
WHERE courseid = 8  2,RANK()和DENSE_RANK()

(1)、 RANK()函數返回結果集的分區內每行的排名。行的排名是相關行之前的排名數加一。如果兩個或多個行與一個排名關聯,則每個關聯線將得到相同的排名SELECT  ID,
  RANK() OVER (ORDER BY score DESC) AS 'Number',
  studentid,
  classid,
  courseid,
  score  
FROM StudentScore
WHERE courseid = 8注意,它和ROW_NUMBER()的異同點,您應該已經知道了:a、RANK函數和ROW_NUMBER函數類似,它們都是用來對結果進行排序。
b、不同的是,ROW_NUMBER函數為每一個值產生唯一的序號,而RANK函數為相同的值產生相同的序號。 (2)、 DENSE_RANK()函數返回結果集分區中行的排名,在排名中沒有任何間斷。行的排名等於所討論行之前的所有排名數加一。如果有兩個或多個行受同一個分區中排名的約束,則每個約束行將接收相同的排名SELECT  ID,
  DENSE_RANK() OVER (ORDER BY score DESC) AS 'Number',
  studentid,
  classid,
  courseid,
  score  
FROM StudentScore
WHERE courseid = 8兩個86分的學生對應的序號都是3,而接著排在它們下面的序號是4(也就是說DENSE_RANK()函數查詢的序號是類似ROW_NUMBER()那樣連續的,但是對於相同值的行產生相同的序號,從這一點上來說,對於相同查詢條件和排序的查詢,ROW_NUMBER()函數查詢的結果集是DENSE_RANK()函數查詢的結果的子集)。這也是我們可以總結出的RANK和DENSE_RANK()這兩個函數的最大的不同點。  3、NTILE()NTILE函數把結果中的行關聯到組,並為每一行分配一個所屬的組的編號,編號從一開始。對於每一個行,NTILE 將返回此行所屬的組的編號。
如果分區的行數不能被 integer_expression 整除,則將導致一個成員有兩種大小不同的組。按照 OVER 子句指定的順序,較大的組排在較小的組前面 SELECT  ID,
  NTILE(6) OVER (ORDER BY classid DESC) AS 'GROUP NUMBER',
  studentid,
  classid,
  courseid,
  score  
FROM StudentScore
WHERE courseid = 8
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.