加载中...
595-大的国家(Big Countries)
发表于:2021-12-03 | 分类: 简单
字数统计: 593 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/big-countries

英文原文

Table: World

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| name        | varchar |
| continent   | varchar |
| area        | int     |
| population  | int     |
| gdp         | int     |
+-------------+---------+
name is the primary key column for this table.
Each row of this table gives information about the name of a country, the continent to which it belongs, its area, the population, and its GDP value.

 

A country is big if:

  • it has an area of at least three million (i.e., 3000000 km2), or
  • it has a population of at least twenty-five million (i.e., 25000000).

Write an SQL query to report the name, population, and area of the big countries.

Return the result table in any order.

The query result format is in the following example.

 

Example 1:

Input: 
World table:
+-------------+-----------+---------+------------+--------------+
| 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 |
+-------------+-----------+---------+------------+--------------+
Output: 
+-------------+------------+---------+
| name        | population | area    |
+-------------+------------+---------+
| Afghanistan | 25500100   | 652230  |
| Algeria     | 37100000   | 2381741 |
+-------------+------------+---------+

中文题目

这里有张 World

+-----------------+------------+------------+--------------+---------------+
| name            | continent  | area       | population   | gdp           |
+-----------------+------------+------------+--------------+---------------+
| Afghanistan     | Asia       | 652230     | 25500100     | 20343000      |
| Albania         | Europe     | 28748      | 2831741      | 12960000      |
| Algeria         | Africa     | 2381741    | 37100000     | 188681000     |
| Andorra         | Europe     | 468        | 78115        | 3712000       |
| Angola          | Africa     | 1246700    | 20609294     | 100990000     |
+-----------------+------------+------------+--------------+---------------+

如果一个国家的面积超过 300 万平方公里,或者人口超过 2500 万,那么这个国家就是大国家。

编写一个 SQL 查询,输出表中所有大国家的名称、人口和面积。

例如,根据上表,我们应该输出:

+--------------+-------------+--------------+
| name         | population  | area         |
+--------------+-------------+--------------+
| Afghanistan  | 25500100    | 652230       |
| Algeria      | 37100000    | 2381741      |
+--------------+-------------+--------------+

通过代码

官方题解

方法一:使用 WHERE 子句和 OR【通过】

思路

使用 WHERE 子句过滤所有记录,获得满足条件的国家。

算法

根据定义,大国家至少满足以下两个条件中的一个:

  1. 面积超过 300 万平方公里。
  2. 人口超过 2500 万。

使用下面语句获得满足条件 1 的大国家。

[snippet1-MySQL]
SELECT name, population, area FROM world WHERE area > 3000000

使用下面语句获得满足条件 2 的大国家。

[snippet2-MySQL]
SELECT name, population, area FROM world WHERE population > 25000000

使用 OR 将两个子查询合并在一起。

MySQL

[solution1-MySQL]
SELECT name, population, area FROM world WHERE area > 3000000 OR population > 25000000 ;

方法二:使用 WHERE 子句和 UNION【通过】

算法

该方法思路与 方法一 一样,但是使用 UNION 连接子查询。

MySQL

[solution2-MySQL]
SELECT name, population, area FROM world WHERE area > 3000000 UNION SELECT name, population, area FROM world WHERE population > 25000000 ;

注:方法二方法一 运行速度更快,但是它们没有太大差别。

统计信息

通过次数 提交次数 AC比率
108072 135618 79.7%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
594-最长和谐子序列(Longest Harmonious Subsequence)
下一篇:
596-超过5名学生的课(Classes More Than 5 Students)
本文目录
本文目录