SQL Server排名或排序的函數

來源:互聯網
上載者:User

標籤:sql server排名   排序函數   

SQL Server獲得排名或排序的函數有如下幾種:1、Rank:在結果集中每一條記錄所在的排名位置,但排名可能不連續,例如:若同一組內有兩個第一名,則該組內下一個名次直接跳至第三名
 select *,Rank() over (partition by modifieddate order by locationid ) as Rank from Production.ProductInventory 



2、Dense_Rank:功能與Rank相似,但排名的數值是連續的,例如:若同一組內有兩個第一名,則該組內下一個名次為第二名
select *,dense_Rank() over (partition by modifieddate order by locationid ) as Rank from Production.ProductInventory 


3、Row_Number:根據組顯示每一條記錄在該組中出現的位置,例如:若有兩個第一名,則這兩個第一名在一組內排名為1、2,下一組的排序仍從1開始,依次類推
select *,row_number() over (partition by productid  order by productid ) as Rank from Production.ProductInventory 


4、NTILE:根據指定的分組數量將結果集分區,並記錄其在組中的位置。可以對結果集的資料排序後,按照指定的數量把結果集分成N組,並給予每組一個組編號,分組的方式很簡單,將結果集的總記錄數除以N,若有餘數M,則前M組都多增一條記錄,因此,並非所有的組都有相同的記錄數,但多記錄的組最多隻有一條記錄。
select top 13 *,NTILE(2) over (partition by productid  order by locationid ) as Rank from Production.ProductInventory 

以上SQL語句均在SQL Server 2008下調試通過,使用AdventureWorks

上述四個函數文法格式相同,都要搭配OVER子句,而且要以指定切分或排序記錄的方式,OVER子句定議格式如下:Over(【Partition BY <提供數值的描述方式>】 ORDER BY <欄位> [DES|ASC])Partition BY 子句決定排名記錄的分組方式,而Order By 子句決定每一組記錄要如何排序,如果省略了Partition by 子句,則全部記錄為一組


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

SQL Server排名或排序的函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.