1

假设我有以下内容:

DECLARE @Name TABLE (Name VARCHAR(MAX));

INSERT INTO @Name VALUES ('bob'),('bob'),('john'),('john'),('mark'),('mark'),('mark'),('lisa');

SELECT  Name,
COUNT(Name) AS TOTALS
FROM @Name
GROUP BY Name
ORDER BY TOTALS DESC;

我怎样才能使用 Rank() 或 Dense_Rank() 根据计数获得排名?

4

2 回答 2

3

如果你想要一个排名列,你可以使用它group by

SELECT n.Name, COUNT(*) as TOTALS,
       RANK() OVER (ORDER BY COUNT(*) DESC) as Total_Rank
FROM @Name n
GROUP BY n.Name
ORDER BY TOTALS DESC;
于 2016-06-09T15:47:43.153 回答
1

试试这个:

SELECT *
    , RANK() OVER(ORDER BY totals DESC) AS Rank 
FROM
(
    SELECT  Name,
    COUNT(Name) AS TOTALS
    FROM @Name
    GROUP BY Name
) a
于 2016-06-09T16:03:06.007 回答