SQLZOO参考答案

SELECT basics/zh

這個例子顯示’France法國’的人口。字串應該在’單引號’中。
修改此例子,以顯示德國 Germany 的人口。

SELECT population FROM world
 WHERE name = 'Germany'

查詢顯示面積為 5,000,000 以上平方公里的國家,該國家的人口密度(population/area)。人口密度並不是 WORLD 表格中的欄,但我們可用公式(population/area)計算出來。
修改此例子,查詢面積為 5,000,000 以上平方公里的國家,對每個國家顯示她的名字和人均國內生產總值(gdp/population)。

SELECT name, gdp/population 
  FROM world
 WHERE area > 5000000

檢查列表:單詞“IN”可以讓我們檢查一個項目是否在列表中。
此示例顯示了“Luxembourg 盧森堡”,“Mauritius 毛里求斯”和“Samoa 薩摩亞”的國家名稱和人口。
顯示“Ireland 愛爾蘭”,“Iceland 冰島”,“Denmark 丹麥”的國家名稱和人口。

SELECT name, population 
  FROM world
 WHERE name IN ('Ireland', 'Iceland', 'Denmark');

哪些國家是不是太小,又不是太大?
BETWEEN 允許範圍檢查 - 注意,這是包含性的。 此例子顯示面積為 250,000 及 300,000 之間的國家名稱和該國面積。
修改此例子,以顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。

SELECT name, area 
  FROM world
 WHERE area BETWEEN 200000 AND 250000

SELECT names/zh

你可以用WHERE name LIKE 'B%'來找出以 B 為開首的國家。
%是萬用字元,可以用代表任何字完。
找出以 Y 為開首的國家。

SELECT name FROM world
 WHERE name LIKE 'Y%'

找出以 Y 為結尾的國家。

SELECT name FROM world
 WHERE name LIKE '%Y'

“Luxembourg 盧森堡”中有一個x字母,還有一個國家的名字中有x。列出這兩個國家。
找出所有國家,其名字包括字母x。

SELECT name FROM world
 WHERE name LIKE '%x%'

“Iceland 冰島”和“Switzerland 瑞士”的名字都是以”land”作結束的。還有其他嗎?
找出所有國家,其名字以 land 作結尾。

SELECT name FROM world
 WHERE name LIKE '%land'

“Columbia 哥倫比亞”是以 C 作開始,ia 作結尾的。還有兩個國家相同。
找出所有國家,其名字以 C 作開始,ia 作結尾。

SELECT name FROM world
 WHERE name LIKE 'C%ia'

“Greece 希臘”中有雙 e 字。哪個國家有雙 o 字呢?
找出所有國家,其名字包括字母oo。

SELECT name FROM world
 WHERE name LIKE '%oo%'

“Bahamas 巴哈馬”中有三個 a,還有嗎?
找出所有國家,其名字包括三個或以上的a。

SELECT name FROM world
 WHERE name LIKE '%a%a%a%'

“India 印度”和”Angola 安哥拉”的第二個字母都是 n。
你可以用底線符_當作單一個字母的萬用字元。
SELECT name FROM world
WHERE name LIKE ‘_n%’
ORDER BY name
找出所有國家,其名字以t作第二個字母。

SELECT name FROM world
 WHERE name LIKE '_t%'
 ORDER BY name

“Lesotho 賴索托”和”Moldova 摩爾多瓦”都有兩個字母 o,被另外兩個字母相隔着。
找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。

SELECT name FROM world
 WHERE name LIKE '%o__o%'

“Cuba古巴”和”Togo 多哥”都是 4 個字母。
找出所有國家,其名字都是 4 個字母的。

SELECT name FROM world
 WHERE name LIKE '____'

“Luxembourg 盧森堡”的首都 capital 都同樣叫“Luxembourg”。
顯示所有國家名字,其首都和國家名字是相同的。

SELECT name
  FROM world
 WHERE name=capital

“Mexico 墨西哥”的首都是”Mexico City”。
顯示所有國家名字,其首都是國家名字加上”City”。
concat函數
函數concat 可以用來合拼兩個或以上的字串。

SELECT name
  FROM world
 WHERE capital = concat(name,' City')

找出所有首都和其國家名字,而首都要有國家名字中出現。

SELECT capital,name
  FROM world
 WHERE capital LIKE concat('%',name,'%')

找出所有首都和其國家名字,而首都是國家名字的延伸。
你應顯示 Mexico City,因它比其國家名字 Mexico 長。
你不應顯示 Luxembourg,因它的首都和國家名相是相同的。

SELECT name,capital
  FROM world
 WHERE capital LIKE concat('%',name,'_%')

“Monaco-Ville"是合併國家名字 “Monaco” 和延伸詞”-Ville".
顯示國家名字,及其延伸詞,如首都是國家名字的延伸。
你可以使用SQL函數 REPLACE 或 MID.

SELECT name,REPLACE(capital,name,'')
  FROM world
 WHERE capital LIKE concat('%',name,'%') AND REPLACE(capital,name,'') <> ''

SELECT Quiz/zh

選擇產生此表的代碼。
在这里插入图片描述

在这里插入图片描述

選擇你會從這個代碼獲得的結果。
在这里插入图片描述

在这里插入图片描述

選擇代碼以顯示以“A”或“L” 結束的國家。

在这里插入图片描述

選擇查詢的結果。
在这里插入图片描述

在这里插入图片描述

這是world表格的開首數行記錄
在这里插入图片描述
選擇你會從這個代碼獲得的結果。
在这里插入图片描述

在这里插入图片描述

選擇代碼以顯示面積大於50000,人口少過1000萬(10000000)的國家。

在这里插入图片描述

選擇代碼以顯示中國,澳大利亞,尼日利亞和法國的人口密度。

在这里插入图片描述

SELECT from WORLD Tutorial/zh

閱讀此表的注意事項 觀察運行一個簡單的SQL命令的結果。

SELECT name, continent, population 
 FROM world

如何使用WHERE來篩選記錄。 顯示具有至少2億人口的國家名稱。 2億是200000000,有八個零。

SELECT name 
  FROM world
 WHERE population > 200000000

找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值。
求助:如何人均國內生產總值計算

SELECT name,gdp/population
  FROM world
 WHERE population > 200000000

顯示’South America’南美洲大陸的國家名字和以百萬為單位人口數。 將人口population 除以一百萬(1000000)得可得到以百萬為單位人口數。

SELECT name,population/1000000 
  FROM WORLD
 WHERE continent = 'South America'

顯示法國,德國,意大利(France, Germany, Italy)的國家名稱和人口。

SELECT name,population
  FROM world
 WHERE name in ('France','Germany','Italy')

顯示包含單詞“United”為名稱的國家。

SELECT name
  FROM world
 WHERE name LIKE '%United%'

成為大國的兩種方式:如果它有3百萬平方公里以上的面積,或擁有250百萬(2.5億)以上人口。
展示大國的名稱,人口和面積。

SELECT name,population,area
  FROM world
 WHERE area > 3000000
    OR population > 250000000

美國、印度和中國(USA, India, China)是人口又大,同時面積又大的國家。排除這些國家。
顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和面積。

SELECT name,population,area
  FROM world
 WHERE (area > 3000000 AND population < 250000000)
    OR (area < 3000000 AND population > 250000000)

除以為1000000(6個零)是以百萬計。除以1000000000(9個零)是以十億計。使用 ROUND 函數來顯示的數值到小數點後兩位。
對於南美顯示以百萬計人口,以十億計2位小數GDP。
百萬和十億
除以為1000000(6個零)是以百萬計。除以1000000000(9個零)是以十億計。

SELECT name,ROUND(population/1000000,2),ROUND(gdp/1000000000,2)
  FROM world
 WHERE continent = 'South America'

顯示國家有至少一個萬億元國內生產總值(萬億,也就是12個零)的人均國內生產總值。四捨五入這個值到最接近1000。
顯示萬億元國家的人均國內生產總值,四捨五入到最近的$ 1000。

SELECT name,ROUND(gdp/population,-3)
  FROM world
 WHERE gdp > 1000000000000

The CASE statement shown is used to substitute North America for Caribbean in the third column.
Show the name - but substitute Australasia for Oceania - for countries beginning with N.

SELECT name,
       CASE WHEN continent='Oceania' THEN 'Australasia'
            ELSE continent 
        END
  FROM world
 WHERE name LIKE 'N%'

Show the name and the continent - but substitute Eurasia for Europe and Asia; substitute America - for each country in North America or South America or Caribbean. Show countries beginning with A or B

SELECT name,
       CASE WHEN continent='Europe'
              OR continent='Asia' THEN 'Eurasia'
            WHEN continent='North America'
              OR continent='South America'
              OR continent='Caribbean' THEN 'America'
            ELSE continent END
  FROM world
 WHERE name LIKE 'A%' 
    OR name LIKE 'B%'

Put the continents right…
Oceania becomes Australasia
Countries in Eurasia and Turkey go to Europe/Asia
Caribbean islands starting with ‘B’ go to North America, other Caribbean islands go to South America
Show the name, the original continent and the new continent of all countries.

SELECT name, continent,
   CASE WHEN continent='Oceania' THEN 'Australasia'
        WHEN continent =  'Eurasia' THEN 'Europe/Asia'
        WHEN name='Turkey' THEN 'Europe/Asia'
        WHEN continent='Caribbean' AND name LIKE 'B%' THEN 'North America'
        WHEN continent='Caribbean' AND name NOT LIKE 'B%' THEN 
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值