Sql Server系列:排序函数
在SQL Server中有4個(gè)排序函數(shù):ROW_NUMBER()、RANK()、DENSE_RANK()及NTILE()函數(shù)。
1.ROW_NUMBER()函數(shù)
ROW_NUMBER()函數(shù)為每條記錄添加遞增的順序數(shù)值序號(hào),即使存在相同的值也遞增序號(hào)。
示例:
SELECT ROW_NUMBER() OVER (ORDER BY [CategoryID] DESC) AS ROWID, [CategoryID], [CategoryName] FROM [dbo].[Category]
WITH SortedProduct AS
(
SELECT ROW_NUMBER() OVER (ORDER BY [CategoryID] DESC) AS [ROW_NUMBER], [CategoryID], [CategoryName]
FROM [dbo].[Category]
)
SELECT * FROM SortedProduct
WHERE [ROW_NUMBER] BETWEEN 2 AND 5
2. RANK()函數(shù)
返回結(jié)果集的分區(qū)內(nèi)每行的排名,如果兩個(gè)或多個(gè)行與一個(gè)排名關(guān)聯(lián),則每個(gè)關(guān)聯(lián)行將得到相同的排名。
示例:
SELECT RANK() OVER (ORDER BY [UnitsInStock] DESC) AS [ROW_NUMBER],[ProductID],[ProductName],[UnitsInStock] FROM [dbo].[Product]
對(duì)于相同的[UnitsInStock],查詢返回相同的排名。
3. DENSE_RANK()函數(shù)
DENSE_RANK()函數(shù)返回結(jié)果集分區(qū)中行的排名,在排名中沒(méi)有任何間斷。行的排名等于所討論行之前的所有排名數(shù)加一。
示例:
SELECT DENSE_RANK() OVER (ORDER BY [UnitsInStock] DESC) AS [ROW_NUMBER],[ProductID],[ProductName],[UnitsInStock] FROM [dbo].[Product]
4. NTILE()函數(shù)
將有序分區(qū)中的行分發(fā)到指定數(shù)目的組中。各個(gè)組有編號(hào),編號(hào)從1開始。對(duì)于每一個(gè)行,NTILE 將返回此行所屬的組的編號(hào)。
語(yǔ)法:
NTILE (integer_expression) OVER ( [ <partition_by_clause> ] < order_by_clause > )
示例:
SELECT NTILE(5) OVER (ORDER BY [UnitsInStock] DESC) AS [ROW_NUMBER],[ProductID],[ProductName],[UnitsInStock] FROM [dbo].[Product]
總結(jié)
以上是生活随笔為你收集整理的Sql Server系列:排序函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 信用卡有额度为什么刷不了?无法刷卡原来是
- 下一篇: 定时任务卡死问题排查