繁体   English   中英

具有按计数和等级分组的TSQL

[英]TSQL with Group By Count and Rank

假设我有以下几点:

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()来基于计数获得排名?

如果需要排名列,可以将其与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;

尝试这个:

SELECT *
    , RANK() OVER(ORDER BY totals DESC) AS Rank 
FROM
(
    SELECT  Name,
    COUNT(Name) AS TOTALS
    FROM @Name
    GROUP BY Name
) a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM