也许我误解,你只是想在每个国家返回最大的城市?
如果是这样,你只需按国家分组,而不是按国家和城市。您需要在GROUP BY
声明中包含标识国家的属性以及该国家的名称。您的查询最终会看起来像:
SELECT lab6.country.name AS cName, max(lab6.city.population) AS largest_pop
FROM lab6.country, lab6.city
WHERE lab6.country.country_code = lab6.city.country_code
GROUP BY lab6.country.country_code, lab6.country.name
如果您还想包括最大的城市的名称,您首先需要决定是否有多个大城市(其中有两个国家做什么或更多具有相同,最大人口的城市)。我会假设你将所有人都包括在内都可以。在这种情况下,你可以简单地做一个子查询在FROM子句中,加入了对城市具有相同人口:
SELECT lc.cName, lab6.city.name, lc.largest_pop
FROM (
SELECT lab6.country.country_code AS cCode
lab6.country.name AS cName,
max(lab6.city.population) AS largest_pop
FROM lab6.country, lab6.city
WHERE lab6.country.country_code = lab6.city.country_code
GROUP BY lab6.country.country_code, lab6.country.name
) AS lc
JOIN lab6.city ON lc.cCode = lab6.city.country_code
WHERE lab6.city.population = lc.largest_pop
什么[RDBMS](http://en.wikipedia.org/wiki/Relational_database_management_system)您正在使用? 'RDBMS'代表*关系数据库管理系统*。 'RDBMS是SQL'的基础,并且适用于所有现代数据库系统,如MS SQL Server,IBM DB2,Oracle,MySQL等...... – 2013-03-12 16:02:16
我正在使用pgSQL – 2013-03-12 16:03:17
这是今天第三次提出这个问题,从同样的家庭作业中出来。我很高兴老师意识到这一点,但也许学生应该做好更好的准备和指导,以便他们自己回答。 – 2013-03-12 16:38:39