Php Postgresql使用聚合和非聚合列,按分组
讲座和我的实验作业中的一些事情解释得不太清楚。我无法显示正确的信息。 这是数据库信息,仅供您参考,以帮助我。 这就是我试图执行的查询 这将导致抛出此SQl错误 连接到数据库! 查询失败:错误:列“city.name”必须出现在GROUP BY子句中或用于聚合函数行3:city.name^ 现在,如果我将city.name添加到GROUPBY子句中,它将返回4096行!我不希望发生这种情况,结果必须按国家名称分组,即232行。我只想显示国家名称、城市名称以及该国人口最多的城市。城市的名字让我很反感,我猜有一个更复杂、语法更重的解决方案。 谢谢你能提供的帮助。Php Postgresql使用聚合和非聚合列,按分组,php,sql,postgresql,aggregate,Php,Sql,Postgresql,Aggregate,讲座和我的实验作业中的一些事情解释得不太清楚。我无法显示正确的信息。 这是数据库信息,仅供您参考,以帮助我。 这就是我试图执行的查询 这将导致抛出此SQl错误 连接到数据库! 查询失败:错误:列“city.name”必须出现在GROUP BY子句中或用于聚合函数行3:city.name^ 现在,如果我将city.name添加到GROUPBY子句中,它将返回4096行!我不希望发生这种情况,结果必须按国家名称分组,即232行。我只想显示国家名称、城市名称以及该国人口最多的城市。城市的名字让我很反
-汤姆·里斯你需要这样的东西:
select
country.name,
city.name,
mp.maxpop
from
lab6.country,
lab6.city,
(select
country_code,
max(population) as maxpop
from
lab6.city
group by
country_code
) mp
where
country.country_code=mp.country_code and
country.country_code=city.county_code and
mp.maxpop=city.population
注:
- 这可以为您提供更多结果/县
- 原始查询不起作用,因为在ansi sql中,不能从“group by”查询中仅返回聚合表达式或group by表达式。(如错误所述)
,其中
应该是来自的,你可能想对那些讨厌的隐式连接做些什么。你是对的。。。当我学习sql时,这些窗口函数实际上并不存在…:-)是的,我确定了从哪里到哪里,一切正常,这是证据