1、列出每個國家的名字 name,當中人口 population 是高於俄羅斯’Russia’的人口。
-- 4.1
SELECT name FROM world
WHERE population >
(SELECT population FROM worldWHERE name='Russia')
2、列出歐州每國家的人均GDP,當中人均GDP要高於英國’United Kingdom’的數值。
-- 4.2
SELECT name FROM world
WHERE gdp/population >
(SELECT gdp/population FROM world WHERE name = 'United Kingdom')
AND continent = 'Europe'
3、在阿根廷Argentina 及 澳大利亞 Australia所在的洲份中,列出當中的國家名字 name 及洲分 continent 。按國字名字順序排序
-- 4.3
SELECT name,continent FROM world
WHERE continent in
(SELECT continent FROM world WHERE name in ('Argentina','Australia'))
ORDER BY name
4、哪一個國家的人口比加拿大Canada的多,但比波蘭Poland的少?列出國家名字name和人口population 。
SELECT name,population FROM world
WHERE
population > (SELECT population FROM world WHERE name = 'Canada')
AND
population < (SELECT population FROM world WHERE name = 'Poland')
5、Germany德國(人口8000萬),在Europe歐洲國家的人口最多。Austria奧地利(人口850萬)擁有德國總人口的11%。
顯示歐洲的國家名稱name和每個國家的人口population。以德國的人口的百分比作人口顯示。
-- 4.5
SELECT name,
CONCAT( ROUND( population/( SELECT population FROM world WHERE name= 'Germany')*100, 0), '%') percentage
FROM world
WHERE continent= 'Europe';
6、哪些國家的GDP比Europe歐洲的全部國家都要高呢? [只需列出 name 。] (有些國家的記錄中,GDP是NULL,沒有填入資料的。)
--4.6
SELECT name FROM world
WHERE gdp > ALL(SELECT gdp FROM world WHERE continent = 'Europe' AND gdp>0)
7、在每一個州中找出最大面積的國家,列出洲份 continent, 國家名字 name 及面積 area。 (有些國家的記錄中,AREA是NULL,沒有填入資料的。)
-- 4.7
SELECT continent,name,area FROM world x
WHERE area >=
ALL(SELECT area FROM world y WHERE y.continent = x.continent AND area>0)
8、列出洲份名稱,和每個洲份中國家名字按子母順序是排首位的國家名。(即每洲只有列一國)
-- 解法1
SELECT continent,name FROM world x
WHERE name <=
ALL(SELECT name FROM world y WHERE x.continent = y.continent)
-- 解法2
SELECT continent,name FROM world x
WHERE name =
(SELECT name FROM world y WHERE x.continent = y.continent ORDER BY name LIMIT 1)
-- 解法3
SELECT continent,name FROM world x
WHERE name =
(SELECT TOP 1 name FROM world y WHERE x.continent = y.continent ORDER BY name)
-- 解法4
SELECT continent,name FROM world
WHERE name IN
(SELECT MIN(name) FROM world GROUP BY continent);
9、找出洲份,當中全部國家都有少於或等於 25000000 人口. 在這些洲份中,列出國家名字name,continent 洲份和population人口。
-- 4.9
SELECT name,continent,population FROM world x
WHERE 25000000 >=
ALL(SELECT population FROM world y WHERE x.continent = y.continent AND y.population > 0)
10、有些國家的人口是同洲份的所有其他國的3倍或以上。列出 國家名字name 和 洲份 continent。
-- 4.10
-- 解法一:数字过大,导致超出int类型范围
SELECT name,continent FROM world x
WHERE population >=
ALL(SELECT 3*y.population FROM world y WHERE x.continent = y.continent
AND x.name!=y.name AND y.population > 0)
-- 解法二:不一定很准确,毕竟涉及除法
SELECT name,continent FROM world x
WHERE x.population/3 >=
ALL(SELECT y.population FROM world y WHERE x.continent = y.continent
AND x.name!=y.name AND y.population > 0)