簡體   English   中英

SQL語句計算字段

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM