返回顶部 底部

sqlzoo练习系列(六)——子查询之SELECT中的SELECT练习

 【Tips】

  • sqlzoo官网链接:https://sqlzoo.net/wiki/SQL_Tutorial/zh
  • 每个系列开头介绍所用表及其信息
  • 每道题均测试通过,含有题目描述、代码和结果
  • 题目为自己简写,最好在官网查看具体题目
  • 部分测试结果不完整,仅为一部分截图

SELECT中的SELECT练习链接:https://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial/zh

所用的表world

  • name:国家名称
  • continent:洲
  • area:面积
  • population:人口
  • gdp:国内生产总值

 

 1.列出每个国家的名字,其中人口高于俄罗斯的人口

SELECT name
FROM world
WHERE population > (SELECT population
                    FROM world
                    WHERE name='Russia')

2.列出欧洲人均GDP高于英国的国家

SELECT name
FROM world
WHERE continent='Europe'
AND gdp/population>(SELECT gdp/population
                    FROM world
                    WHERE name='United Kingdom')

3.在阿根廷Argentina 及澳大利亚 Australia所在的洲中,列出其中的国家名字 name 及洲 continent 。按国家名字排序

SELECT name,continent
FROM world
WHERE continent IN (SELECT continent FROM world
                    WHERE name='Argentina' OR name='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.显示欧洲国家名称name和每个国家的人口population。以德国的人口的百分比作人口显示(百分数的显示)

【可以用ROUND删除小数,用CONCAT增加百分比符号】

SELECT name,CONCAT(ROUND(population/
                          (SELECT population 
                           FROM world
                           WHERE name = 'Germany') *100,0),'%')
                               
FROM world
WHERE continent = 'Europe'

找到世界上人口最多的国家

SELECT name
  FROM world
 WHERE population >= ALL(SELECT population
                           FROM world
                          WHERE population>0)
-- population>0,保证某些人口是没有填入,只有 null值。

6.哪些国家的GDP比Europe欧洲的全部国家都要高呢? [只需列出 name 。] (有些国家的记录中,GDP是NULL,沒有填入资料的)

SELECT name
FROM world
WHERE gdp > ALL (SELECT gdp FROM world
                 WHERE continent = 'Europe' AND gdp>0)

7.在每一个州中找出最大面积的国家,列出洲continent, 国家名字 name 及面积area。 (有些国家的记录中,AREA是NULL,没有填入资料的。)

SELECT continent,name,area FROM world x
WHERE area >= ALL (SELECT area FROM world y
                   WHERE x.continent=y.continent AND area>0)

8.列出洲份名称,和每个洲份中国家名字按字母顺序是排首位的国家名。(即每洲只有列一国)

SELECT continent,name
FROM world x
WHERE name <=ALL(SELECT name FROM world y
                 WHERE x.continent = y.continent)

9.找出洲,其中全部国家<=25000000人口,在这些洲中,列出国家名字name,continent,洲和population

SELECT name,continent,population
FROM world x
WHERE 25000000>=ALL(SELECT population FROM world y
WHERE x.continent = y.continent AND population>0)

10.有些国家的人口是同洲的所有其他国的3倍或以上。列出 国家名字name 和 洲continent

SELECT name,continent
FROM world x
WHERE population/3 >= ALL(SELECT population FROM world y
                          WHERE x.continent = y.continent
                          AND population>0 AND x.name != y.name)

posted @ 2020-10-18 15:43  tuzinn  阅读(408)  评论(0编辑  收藏  举报