SQL Server排名或排序的函數

來源:互聯網
上載者:User

標籤:over   partition   modified   函數   des   tin   class   rac   top   

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組,並給予每組一個組編號,分組的方式非常easy,將結果集的總記錄數除以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.