导入数据:
Create table If Not Exists World (name varchar(255), continent varchar(255), area int, population int, gdp bigint);
Truncate table World;
insert into World (name, continent, area, population, gdp) values ('Afghanistan', 'Asia', '652230', '25500100', '20343000000');
insert into World (name, continent, area, population, gdp) values ('Albania', 'Europe', '28748', '2831741', '12960000000');
insert into World (name, continent, area, population, gdp) values ('Algeria', 'Africa', '2381741', '37100000', '188681000000');
insert into World (name, continent, area, population, gdp) values ('Andorra', 'Europe', '468', '78115', '3712000000');
insert into World (name, continent, area, population, gdp) values ('Angola', 'Africa', '1246700', '20609294', '100990000000');
World
表:
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| name | varchar |
| continent | varchar |
| area | int |
| population | int |
| gdp | bigint |
+-------------+---------+
name 是这张表的主键。
这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。
如果一个国家满足下述两个条件之一,则认为该国是 大国 :
面积至少为 300 万平方公里(即,3000000 km2),或者
人口至少为 2500 万(即 25000000)
编写一个 SQL 查询以报告 大国 的国家名称、人口和面积。
按 任意顺序 返回结果表。
查询结果格式如下例所示。
示例:
输入:
World 表:
+-------------+-----------+---------+------------+--------------+
| name | continent | area | population | gdp |
+-------------+-----------+---------+------------+--------------+
| Afghanistan | Asia | 652230 | 25500100 | 20343000000 |
| Albania | Europe | 28748 | 2831741 | 12960000000 |
| Algeria | Africa | 2381741 | 37100000 | 188681000000 |
| Andorra | Europe | 468 | 78115 | 3712000000 |
| Angola | Africa | 1246700 | 20609294 | 100990000000 |
+-------------+-----------+---------+------------+--------------+
输出:
+-------------+------------+---------+
| name | population | area |
+-------------+------------+---------+
| Afghanistan | 25500100 | 652230 |
| Algeria | 37100000 | 2381741 |
+-------------+------------+---------+
解题思路:
方法一:使用 WHERE 子句和 OR【通过】
思路
使用 WHERE 子句过滤所有记录,获得满足条件的国家。
算法
根据定义,大国家至少满足以下两个条件中的一个:
面积超过 300 万平方公里。
人口超过 2500 万。
使用下面语句获得满足条件 1 的大国家。
SELECT name, population, area FROM world WHERE area > 3000000;
使用下面语句获得满足条件 2 的大国家。
SELECT name, population, area FROM world WHERE population > 25000000;
使用 OR 将两个子查询合并在一起。
SELECT
name, population, area
FROM
world
WHERE
area >= 3000000 OR population >= 25000000
;
方法二:使用 WHERE 子句和 UNION【通过】
算法
该方法思路与 方法一 一样,但是使用 UNION 连接子查询。
SELECT
name, population, area
FROM
world
WHERE
area >= 3000000
UNION
SELECT
name, population, area
FROM
world
WHERE
population >= 25000000
;
注:方法二 比 方法一 运行速度更快,但是它们没有太大差别。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/big-countries
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。