从 GROUP BY 操作中选择最大计数

Selecting the maximum count from a GROUP BY operation

请原谅我的 SQL 知识,但我有一个 Person table 和以下数据 -

Id          Name
----        ------
1           a
2           b
3           b
4           c

我想要以下结果 -

Name      Total
------    ------
b         2

如果我使用 GROUP BY 查询 -

SELECT Name, Total=COUNT(*) FROM Person GROUP BY Name  

它给了我 -

Name   Total
------ ------
a      1
b      2
c      1

但我只想要数量最多的那个。我如何获得它?

试试这个...

SELECT Name, COUNT(*) 
        FROM Person 
        GROUP BY Name 
        having COUNT(*)=( SELECT max(COUNT(*)) FROM Person GROUP BY Name) ;

答案是:

WITH MaxGroup AS (
   SELECT Name, COUNT(*) AS Total
   FROM Person
   GROUP BY Name)
SELECT Name, Total
FROM MaxGroup
WHERE Total = (SELECT MAX(Total) FROM MaxGroup)

在 SQL 服务器中执行此操作的最简单方法是使用 top 语法:

SELECT   TOP 1 Name, COUNT(*) AS Total 
FROM     Person 
GROUP BY Name  
ORDER BY 2 DESC

如果你想要领带

SELECT top (1) with ties Name, COUNT(*) AS [count]
  FROM Person 
 GROUP BY Name  
 ORDER BY count(*) DESC