[英]SQL statement calculated field
这是我的问题,我需要最后一点的帮助。 我不知道如何创建一个计算字段来计算字段名称的含义。
从“城市”表中选择ID,名称,“国家”和“人口”,然后从“国家”表中选择“预期寿命”,“名称”,“ SurfaceArea”和“ GNP”。 使用以下条件限制您的结果集(要满足所有条件,必须满足以下所有条件才能返回记录):
乡村面积介于3,000,000到40,000,000之间(使用
运营商之间)
City.District字段的长度大于4
创建计算出的字段“ CityPopulationPercentageOfCountryPopulation”,以计算字段名称建议的内容。
到目前为止,这就是我所拥有的。 提前致谢。
SELECT City.ID
, City.name
, City.Country
, City.Population
, Country.LifeExpectancy
, Country.Name
, Country.SurfaceArea
, Country.GNP
, ROUND(City.Population * 100.0 / Country.Population, 1) AS 'CityPopulationPercentageOfCountryPopulation'
FROM City
, Country
WHERE Country.SurfaceArea BETWEEN 3000000 AND 40000000
AND LENGTH(City.District) > 4
请勿在FROM
子句中使用逗号。 始终使用正确,明确,标准的JOIN
语法。 您的查询应如下所示:
SELECT . . .
FROM City JOIN
Country
ON City.CountryCode = Country.Code -- or whatever columns are used for the `JOIN`
WHERE Country.SurfaceArea BETWEEN 3000000 AND 40000000 AND
LENGTH(City.District) > 4
似乎在这里是半交叉联接。 也就是说,从City
返回的每一行都与从Country
返回的每一行都匹配。
我建议放弃用于JOIN
操作的旧式逗号语法,而改用JOIN
关键字。 如果我们打算使用半笛卡尔乘积,则建议添加CROSS
关键字,以提醒以后的读者,在ON
子句中省略任何连接谓词(匹配条件)是有意的,而不是疏忽大意。
同样, LENGTH
函数返回字节数; 使用CHAR_LENGTH
返回字符数。
我怀疑我们想将每个城市“匹配”到特定国家。 也许City
表在Country
表中包含一个Country_ID
列外键引用ID
列。 或者“ Country
列是外键。 (这只是一个猜测;没有确凿的迹象表明问题就是这种情况。)
SELECT ci.ID AS city_id
, ci.name AS city_name
, ci.Country AS city_country
, ci.Population AS city_population
, co.LifeExpectancy AS country_lifeexpectancy
, co.Name AS country_name
, co.SurfaceArea AS country_surfacearea
, co.GNP AS country_gnp
, ROUND(100 * ci.Population / co.Population, 1) AS `CityPopulationPercentageOfCountryPopulation`
FROM City ci
JOIN Country co
ON co.ID = ci.Country_ID
WHERE co.SurfaceArea BETWEEN 3000000 AND 40000000
AND CHAR_LENGTH(ci.District) > 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.