SQLZOO练习-- SELECT within SELECT Tutorial(含题目翻译)
知識點
子查詢
?
數據表
world
?
?
題目內容
1.List each country?name?where the?population?is larger than that of 'Russia'.(查找人口數大于'Russia'的國家)
SELECT name FROM worldWHERE population >(SELECT population FROM worldWHERE name='Russia')?
2.Show the countries in Europe with a per capita GDP greater than 'United Kingdom'.(查找人均GDP大于'United Kingdom'的國家,人均GDP=GDP/人口數)
select name from world where continent = 'Europe' and gdp/population > (select gdp/population from world where name = 'United Kingdom')?
3.List the?name?and?continent?of countries in the continents containing either?Argentina?or?Australia. Order by name of the country.(查找和‘Argentina’或者‘Australia’在同一個洲的國家名稱和洲名稱,按照國家名稱排序)
select name,continent from world where continent in (select continent from world where name in ('Argentina','Australia')) order by name?
4.Which country has a population that is more than Canada but less than Poland? Show the name and the population.(查找人口數多于‘Canada’,但少于‘Poland’的國家名稱和人口數)
ps:這道題不可以用between and,因為題目要求不包含上下限,而between and是包含上下限的
select name,population from world where population > (select population from world where name='Canada') and population <(select population from world where name='Poland') order by name?
5.Show the name and the population of each country in Europe. Show the population as a percentage of the population of Germany.(查找‘Europe’洲中的國家名稱和人口百分比,人口百分比=人口數/‘Germany’國家人口數)
select name, concat(round(population/(select population from world where name = 'Germany')*100,0),'%') from world where continent = 'Europe'?
6.Which countries have a GDP greater than every country in Europe? [Give the?name?only.] (Some countries may have NULL gdp values).(查找GDP大于‘Europe’中每一個國家GDP的國家,需要注意有的國家GDP為0)
select name from world where gdp > all(select gdp from worldwhere continent = 'Europe'and gdp > 0)?
進階練習
7.Find the largest country (by area) in each continent, show the?continent, the?name?and the?area.(查找每個大洲中面積最大的國家的國家名稱、隸屬洲名、面積)
SELECT continent, name, area FROM world xWHERE area >= ALL(SELECT area FROM world yWHERE y.continent=x.continentAND area > 0)?
8.List each continent and the name of the country that comes first alphabetically.(查找每個大洲中按照字母排序排在第一的國家的國家名稱、隸屬洲名)
select continent,name from world x where x.name=(select y.name from world y where y.continent=x.continent order by name limit 1)?
難度挑戰
9.Find the continents where all countries have a population <= 25000000. Then find the names of the countries associated with these continents. Show?name,?continent?and?population.(查找每個國家的人口數都≤25000000的大洲,并查詢這些大洲下的國家名稱、洲名稱、人口數)
select name,continent,population from world x where 25000000 >= all(select population from world ywhere x.continent = y.continentand population > 0)?
10.Some countries have populations more than three times that of any of their neighbours (in the same continent). Give the countries and continents.(查找隸屬同一個洲,且人口數是其他國家人口數3倍的國家名稱、洲名稱)
select name,continent from world x where x.population/3 >= all (select y.population from world ywhere x.continent = y.continentand x.name <> y.nameand population >0)?
總結
以上是生活随笔為你收集整理的SQLZOO练习-- SELECT within SELECT Tutorial(含题目翻译)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年江苏制造业百强企业排行榜:24
- 下一篇: 微信小程序中显示倒计时