Mssql排名

在SQL Server中,可以使用排名函式來對一組數據進行排名。排名函式用於對一組數據進行排序後,為每條記錄分配一個排名值。SQL Server提供了兩種排名函式:ROW_NUMBER()和RANK()。

ROW_NUMBER()函式為每條記錄分配一個連續的編號,這個編號從1開始,不跳號。

SELECT ROW_NUMBER() OVER (ORDER BY 欄位名 ASC|DESC) AS 排名, 欄位名
FROM 表名

RANK()函式為每組中的第一條記錄分配1,為每組中的第二條記錄分配2,依此類推。如果兩條記錄具有相同的值,則每組中的最後一條記錄的排名相同。

SELECT RANK() OVER (ORDER BY 欄位名 ASC|DESC) AS 排名, 欄位名
FROM 表名

例如,要查詢訂單表中每個訂單的總金額並按總金額降序排列,並顯示訂單號和總金額,可以使用以下語句:

SELECT ROW_NUMBER() OVER (ORDER BY TotalAmount DESC) AS 排名, OrderID, TotalAmount
FROM Orders

這個查詢將返回每個訂單的排名、訂單號和總金額。排名是從1開始的連續編號。

如果要查詢每個城市的訂單總數並按訂單總數降序排列,並顯示城市名稱和訂單總數,可以使用以下語句:

SELECT RANK() OVER (PARTITION BY City ORDER BY OrderCount DESC) AS 排名, City, OrderCount
FROM (SELECT City, COUNT(*) AS OrderCount
FROM Orders
GROUP BY City) AS SubQuery

這個查詢使用了分區功能,按城市對訂單進行分組,然後對每個城市的訂單總數進行排名。排名是從1開始的連續編號,但每個城市的排名是獨立的。