2015-07-03 97 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