1

您好,我是 MySQL 的新手,现在正在学校里试图找出我的导师提出的问题。这是问题:

Select ID, name, Country and Population from City Table, Select Life Expectancy, Name, SurfaceArea and GNP from the Country Table.

使用以下限制结果集,

  1. Country SurfaceArea 介于 3,000,000 和 40,000,000 之间(使用 between 运算符)
  2. City.District 字段的长度大于 4
  3. 创建计算字段“CityPopulationPercentageOFCountryPopulation”,该字段计算该字段的建议“

这就是城市表的描述:

ID、姓名、国家、地区、人口

国家表是这样描述的:

代码、名称、大陆、地区、SurfaceArea、IndepYear、人口、预期寿命、GNP、LocalName、GovernmentForm、HeadOfState、Capital、Code2

我已经尝试过这个和其他变体,但没有运气:

Select City.ID, City.Name, City.Country, City.Population, Country.LifeExpectancy, Country.Name, Country.SurfaceArea, Country.GNP, 
(Select City.Population / Country.Population * 100, Count(City.Population / Country.population *100) AS "CityPopulationPercentageofCountryPopulation")
From City, Country
Where Country.SurfaceArea BETWEEN 3000000 and 40000000;

就像我说的那样,我对此很陌生,并尽我所能通过在线查看等来弄清楚。一些帮助,也许和解释你如何解决它真的会有所帮助

问候,

4

2 回答 2

1

以下是按国家/地区获得城市与国家/地区百分比的方法。我可以告诉您这一点,因为您与上面发布的查询非常接近。

SELECT
  City.Country,
  SUM(City.Population) / Country.Population * 100 AS CityPopulationPercentageOFCountryPopulation
FROM City
INNER JOIN Country ON City.Country = Country.Code
GROUP BY City.Country

您的讲师是否涵盖了内联视图,其中子查询像表一样使用?我希望如此,因为这就是您将计算列包含在每个城市中的方式。这是带有城市 ID、城市名称、城市人口、国家代码和城市人口百分比的简化版本:

SELECT
  City.ID,
  City.Name,
  City.Country,
  City.Population,
  PopPercent.CityPopulationPercentageOFCountryPopulation
FROM City
INNER JOIN (
    SELECT
      City.Country,
      SUM(City.Population) / Country.Population * 100 AS CityPopulationPercentageOFCountryPopulation
    FROM City
    INNER JOIN Country ON City.Country = Country.Code
    GROUP BY City.Country
) PopPercent ON City.Country = PopPercent.Country

您可以使用上面的查询并添加另一个连接Country以获取国家/地区值,然后您应该拥有按表面积以及城市区域名称的长度过滤所需的所有信息。我会把那部分留给你:)

最后一点:我今天下午没有可用的 MySQL,所以这是来自内存,未经测试。如果有任何错误,我深表歉意。

于 2013-06-03T19:25:19.657 回答
0

选择 City.ID, City.Name, City.Country, City.Population, Country.LifeExpectancy, Country.SurfaceArea, Country.Name, Country.GNP, (Select City.Population / Country.Population * 100) AS CityPopulationPercentageOfCountryPopulation From City INNER JOIN Country ON City.Country=Country.Code where Country.SurfaceArea BETWEEN 3000000 and 40000000 and LENGTH(City.District)>4 limit 200;

于 2013-06-04T01:51:36.047 回答