## 595. Big Countries

There is a table `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     |
+-----------------+------------+------------+--------------+---------------+
```

A country is big if it has an area of bigger than 3 million square km or a population of more than 25 million.

Write a SQL solution to output big countries' name, population and area.

For example, according to the above table, we should output:

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

b'
\n\n

## Solution

\n
\n

#### Approach I: Using `WHERE` clause and `OR` [Accepted]

\n

Intuition

\n

Use `WHERE` clause in SQL to filter these records and get the target countries.

\n

Algorithm

\n

According to the definition, a big country meets at least one of the following two conditions:\n1. It has an area of bigger than 3 million square km.\n2. It has a population of more than 25 million.

\n

So for the first condition, we can use the following code to get the big countries of this type.

\n
`SELECT name, population, area FROM world WHERE area > 3000000\n`
\n

In addition, we can use below code to get big countries of more than 25 million people.

\n
`SELECT name, population, area FROM world WHERE population > 25000000\n`
\n

As most people may already come into mind, we can use `OR` to combine these two solutions for the two sub-problems together.

\n

MySQL

\n
`SELECT\n    name, population, area\nFROM\n    world\nWHERE\n    area > 3000000 OR population > 25000000\n;\n`
\n

#### Approach II: Using `WHERE` clause and `UNION` [Accepted]

\n

Algorithm

\n

The idea of this approach is the same as the first one. However, we use `UNION` instead of `OR`.

\n

MySQL

\n
`SELECT\n    name, population, area\nFROM\n    world\nWHERE\n    area > 3000000\n\nUNION\n\nSELECT\n    name, population, area\nFROM\n    world\nWHERE\n    population > 25000000\n;\n`
\n
\n

Note: This solution runs a little bit faster than the first one. However, they do not have big difference.

\n
\n
'