[英]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.