2015-07-03 98 views
2

如何在SQL Server中編寫查詢,如rank()但計算有點不同。SQL Server中的rank()之類的東西

例如排名是:

rankNumber uniqeId 
1    160 
2    159 
3    158 
4    157 
5    156 
5    156 
7    152 
8    151 
8    151 
10   150 

我需要的結果是這樣的:

rankNumber uniqeId 
1   160 
2   159 
3   158 
4   157 
5   156 
5   156 
6   152 
7   151 
7   151 
8   150 

我怎樣才能做到這一點? SQL Server中有這樣的函數嗎?

+5

菊st使用'DENSE_RANK'來代替 – Lamak

回答

4
SELECT DENSE_RANK() OVER (ORDER BY TotCnt DESC) AS TopCustomers, CustomerID, TotCnt 

FROM (SELECT CustomerID, COUNT(*) AS TotCnt 

FROM Orders Group BY CustomerID) AS Cust 

輸出

enter image description here

0

爲了擴大在DENSE_RANK評論,全面查詢是簡短而親切:

SELECT 
    DENSE_RANK() OVER (ORDER BY uniqueId DESC) AS rankNumber, 
    uniqueId 
FROM myTable 
ORDER BY rankNumber 

有一個SQL小提琴here