SQLZOO:SELECT within SELECT Tutorial/zh 笔记

SELECT within SELECT Tutorial/zh

world表:
在这里插入图片描述
name 国家名
continent 洲
area 面积
population 人口
gdp 国民生产总值

开始查询

子查询

1、列出每个国家的名字 name,当中人口 population 是高于俄罗斯’Russia’的人口。

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

2、列出欧州人均GDP高于英国’United Kingdom’的国家。

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 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。以德国人口的百分比作人口显示。

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

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 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
                  ORDER BY name)

9、找出洲中全部国家都有少于或等于 25000000 人口. 在这些洲中,列出国家名字name,continent 洲和population人口。

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

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

SELECT name, continent FROM world x
WHERE population / 3 >= ALL(SELECT population FROM world y
                            WHERE y.continent = x.continent 
                            AND x.name != y.name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值