User Countries
Description
You are really interested in statistics, and your new project is to gather some information about the users of a big social network. More specifically, you want to know which countries these users are from. Using the social network’s API, you managed to collect enough data to compose two tables users and cities, which have the following structures:
- users:
- id: the unique user ID;
- city: the name of the city where this user lives;
- cities:
- city: a unique city name;
- country: the name of the country where this city is located.
Given the tables users and cities, build the resulting table so that it consists of the columns id and country. The table should consist of user ids, and for each user the country where they live should be given in the country column. If a user’s city is missing from the cities table, the country column should contain "unknown" instead.
Return the table sorted by users’ ids.
Example
For the following table users
| id | city |
|---|---|
| 1 | San Francisco |
| 2 | Moscow |
| 3 | London |
| 4 | Washington |
| 5 | New York |
| 6 | Saint Petersburg |
| 7 | Helsinki |
and the following table cities:
| city | country |
|---|---|
| Moscow | Russia |
| Saint Petersburg | Russia |
| San Francisco | USA |
| Washington | USA |
| New York | USA |
| London | England |
the output should be
| id | country |
|---|---|
| 1 | USA |
| 2 | Russia |
| 3 | England |
| 4 | USA |
| 5 | USA |
| 6 | Russia |
| 7 | unknown |
- [execution time limit] 10 seconds (mysql)
Solution
1
2
3
4
5
6
7
/*Please add ; after each select statement*/
CREATE PROCEDURE userCountries()
BEGIN
SELECT id, IF(country IS NULL, 'unknown', country) as country
FROM users u LEFT JOIN cities c ON u.city=c.city
ORDER BY id;
END