SQLZOO练习(五) Select within select
Select within select
1.列出人口大于"俄罗斯"的每个国家/地区名称。
SELECT name
FROM world
WHERE population > (SELECT population
FROM world
WHERE name='Russia');
2.显示欧洲人均 GDP 大于"英国"的国家。
人均国内生产总值
人均GDP是gdp/人口
SELECT name
FROM world
WHERE continent = 'Europe'
AND gdp/population > (SELECT gdp/population
FROM world
WHERE name = 'United Kingdom');
3.列出包含阿根廷或澳大利亚各大洲的国家的名称和大陆。按国家/地区名称排列。
SELECT name,continent
FROM world
WHERE continent IN (SELECT continent FROM world
WHERE name IN ('Argentina','Australia'))
ORDER BY name;
4.哪个国家的人口比加拿大多,但比波兰少?显示名称和人口。
SELECT name,population
FROM world
WHERE population > (SELECT population FROM world
WHERE name = 'Canda')
AND population < (SELECT population FROM world
WHERE name = 'Poland');
5.德国(人口8000万)是欧洲国家中人口最多的国家。奥地利(人口850万)占德国人口的11%。
显示欧洲每个国家的名称和人口。按德国人口的百分比显示人口。
格式应为名称,例如百分比:
名字 | 百分比 |
---|---|
阿尔巴尼亚 | 3% |
安道尔 | 0% |
奥地利 | 11% |
… | … |
小数位
百分比符号 %
您可以使用函数CONCAT 添加百分比符号。
SELECT name,CONCAT(ROUND(population/(SELECT population FROM world WHERE name = 'Germany')*100,0),'%') AS percentage
FROM world
WHERE continent = 'Europe';
6.哪些国家的GDP高于欧洲的每个国家?仅给出名称。(某些国家/地区可能有 NULL gdp 值)
SELECT name
FROM world
WHERE gdp > ALL(SELECT gdp
FROM world
WHERE continent = 'Europe' AND gdp>0);
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.按字母顺序列出每个大陆和先到的国家/地区的名称。
SELECT continent,name
FROM world x
WHERE name <= ALL(SELECT name
FROM world y
WHERE y.continent=x.continent);
9.查找所有国家/地区的人口 <= 250000000 的大洲。然后找到与这些大陆相关的国家的名称。显示名称,大陆和人口。
SELECT name,continent,population FROM world x
WHERE 25000000 >= ALL(SELECT population
FROM world y
WHERE y.continent = x.continent
AND y.population > 0);
10.一些国家的人口是其任何邻国(同一个大陆)的三倍以上。显示国家和大陆。
SELECT name,continent
FROM world x
WHERE population >= ALL(SELECT population*3
FROM world y
WHERE y.continent=x.continent
AND y.name != x.name);
Quiz:CBADBBB