595. Big Countries
Description
Table: World
+-------------+---------+ | Column Name | Type | +-------------+---------+ | name | varchar | | continent | varchar | | area | int | | population | int | | gdp | bigint | +-------------+---------+ name is the primary key (column with unique values) 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 a solution to find the name, population, and area of the big countries.
Return the result table in any order.
The 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 | +-------------+------------+---------+
Solutions
Solution 1
Thinking
A big country meets an area or a population threshold. One filter is enough.
WHERE area >= 3000000 OR population >= 25000000 keeps a row that satisfies either predicate. Disjunction avoids dropping one-sided matches.
1 2 3 4 | |
Solution 2
Thinking
Solution 1 uses OR. Two separate queries unioned together also work and remove duplicates.
If OR defeats an index, two range scans plus UNION can be stabler. The row set matches Solution 1.
1 2 3 4 5 6 7 8 | |