从 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
请原谅我的 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