SQLZOO 練習答案 SELECT FROM world
name | continent | area | population | gdp |
---|---|---|---|---|
Afghanistan | Asia | 652230 | 25500100 | 20343000000 |
Albania | Europe | 28748 | 2831741 | 12960000000 |
Algeria | Africa | 2381741 | 37100000 | 188681000000 |
Andorra | Europe | 468 | 78115 | 3712000000 |
Angola | Africa | 1246700 | 20609294 | 100990000000 |
... |
name:國家名稱
continent:洲份
area:面積
population:人口
gdp:國內生產總值
2:顯示具有至少2億人口的國家名稱。
2億是200000000,有八個零。
SELECT
name FROM world WHERE population>200000000;
3:找出有至少200百萬(2億)人口的國家名稱,及人均國內生產總值。
SELECT name,gdp/population FROM world WHERE population >200000000;
4:顯示'South America'南美洲大陸的國家名字和以百萬為單位人口數。 將人口population 除以一百萬(1000000)得可得到以百萬為單位人口數。
SELECT name,population/1000000 FROM world WHERE continent='South America';
5:顯示法國,德國,義大利(France,
Germany, Italy)的國家名稱和人口。
SELECT name,population FROM world WHERE name IN('France','Germany','Italy');
6:顯示包含單詞“United”為名稱的國家。
SELECT name FROM world WHERE name LIKE '%United%';
7:成為大國的兩種方式:如果它有3百萬平方公里以上的面積,或擁有250百萬(2.5億)以上人口。
展示大國的名稱,人口和麵積。
SELECT name,population,area FROM world WHERE area>3000000 OR population
>250000000;
8:
顯示以人口或面積為大國的國家,但不能同時兩者。顯示國家名稱,人口和麵積。
SELECT name,population,area FROM world WHERE (area>3000000 AND population<250000000)
OR (area<3000000 AND population>250000000);
9:對於南美顯示以百萬計人口,以十億計2位小數GDP。
SELECT name,ROUND(population/1000000,2),ROUND(gdp/1000000000,2) FROM
world WHERE continent='South America';
10:顯示萬億元國家的人均國內生產總值,四捨五入到最近的$ 1000。
SELECT name,ROUND(gdp/population,-3) FROM world WHERE gdp>1000000000000;
11: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%';
12: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 IN('Europe','Asia')
THEN 'Eurasia'
WHEN continent IN('North America','South America','Caribbean')
THEN 'America'
ELSE continent END
FROM world
WHERE name LIKE 'A%' OR
name LIKE 'B%';
13: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
SELECT name,continent,
CASE WHEN continent IN ('Eurasia', 'Turkey')
THEN 'Europe/Asia'
WHEN continent = 'Oceania'
THEN 'Australasia'
WHEN continent = 'Caribbean'
THEN
CASE
WHEN name LIKE 'B%'
THEN 'North America'
ELSE 'South America'
END
ELSE continent
END
FROM world
ORDER BY name ASC;
總結:
1:這篇裡面主要涉及到一個CASE WHEN THEN ELSE 的方法
CASE的話,類似於一個判斷語句
他可以對欄位的值進行判斷,並返回你設定的值
內部邏輯程式碼有WHEN,THEN,ELSE,END
2: ROUND函式,有2個引數
ROUND(你需要修改的數字,保留的小數點位數)
預設是不顯示小數點,正數是保留的小數點的位數
負數是向左進行保留
比如
ROUND(10/3,2)=3.33
ROUND(10/3)=3
ROUND(12345,-2)=12300