Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server 2008中查找聚合查询的最大值:选择城市最多的美国州_Sql Server_Aggregate Functions - Fatal编程技术网

Sql server 在SQL Server 2008中查找聚合查询的最大值:选择城市最多的美国州

Sql server 在SQL Server 2008中查找聚合查询的最大值:选择城市最多的美国州,sql-server,aggregate-functions,Sql Server,Aggregate Functions,好的,SQL专家开发人员,我希望这听起来很简单。基本上,我希望形成一个查询,以查找每个州的城市数,并且只包含结果集中城市最多的州 比如: SELECT S.Name, MAX(COUNT(C.StateID) as 'Count') --NO Can do, please help! FROM tblStates as S JOIN tblCities as C ON S.StateID = C.StateID GROUP BY S.Name 请让我知道最简单的方法,使这个查询工作 谢谢也许有

好的,SQL专家开发人员,我希望这听起来很简单。基本上,我希望形成一个查询,以查找每个州的城市数,并且只包含结果集中城市最多的州

比如:

SELECT S.Name, MAX(COUNT(C.StateID) as 'Count') --NO Can do, please help!
FROM tblStates as S JOIN tblCities as C
ON S.StateID = C.StateID
GROUP BY S.Name
请让我知道最简单的方法,使这个查询工作


谢谢

也许有一种更优雅的方式,但这应该是可行的:

SELECT s.Name, MAX(Count) FROM
    (SELECT S.Name, COUNT(C.StateID) as 'Count' --NO Can do, please help!
    FROM tblStates as S JOIN tblCities as C
    ON S.StateID = C.StateID
    GROUP BY S.Name)

某些方言(如Postgres)允许在ORDER子句中使用列号:ORDER BY 2 DESC。

LIMIT在2008年不是关键字。SQL server允许按顺序列号进行排序,也可以这样;SQL Server需要TOP n版本。
SELECT s.Name, MAX(Count) FROM
    (SELECT S.Name, COUNT(C.StateID) as 'Count' --NO Can do, please help!
    FROM tblStates as S JOIN tblCities as C
    ON S.StateID = C.StateID
    GROUP BY S.Name)
SELECT S.Name, COUNT(C.StateID) AS 'Count' 
FROM tblStates as S JOIN tblCities as C 
ON S.StateID = C.StateID 
GROUP BY S.Name 
ORDER BY COUNT(C.StateID) DESC LIMIT 1;