This project is slightly different than others you have encountered thus far on Codecademy. Instead of a step-by-step tutorial, this project contains a series of open-ended requirements which describe the project you’ll be building. There are many possible ways to correctly fulfill all of these requirements, and you should expect to use the internet, Codecademy, and other resources when you encounter a problem that you cannot easily solve.

You’ll work with a dataset of world population by country data from recent years. You’ll write queries to retrieve interesting data and answer a set of specific questions.

Project 1

#load DBI lybrary to use SQL in R
library(DBI)
db = dbConnect(RSQLite::SQLite(), dbname = "db.sqlite")

In this project, you’ll answer questions using a database of world population by country.

The schema of the database is:

Refer to this schema as you write queries to the database.

When you finish this project, you should be able to answer each the questions that follow using a single SQL query.

1 - The first query has already been written for you to answer the following question:

What years are covered by the dataset? (you can manually count the number of years returned).

Continue adding your queries below the first one as you proceed.

SELECT DISTINCT year from population_years;

2 - What is the largest population size for Gabon in this dataset?

SELECT Max(population)
from population_years
WHERE country = "Gabon";

3 - What were the 10 lowest population countries in 2005?

SELECT country
FROM population_years
WHERE year = 2005
ORDER BY population ASC LIMIT 10;

4 - What are all the distinct countries with a population of over 100 million in the year 2010

SELECT DISTINCT country
FROM population_years
WHERE population > 100 and YEAR = 2010;

5 - How many countries in this dataset have the word “Islands” in their name?

SELECT COUNT (*)
FROM population_years
WHERE country LIKE "%Islands%";

6 - What is the difference in population between 2000 and 2010 in Indonesia?

Note: it’s okay to figure out the difference by hand after pulling the correct data.

SELECT * 
FROM population_years
WHERE country = "Indonesia" and year = 2000
OR country = "Indonesia" and year = 2010;

Project 2

The schema of the database is:

countries:

population_years:

Refer to this schema as you write queries to the database.

When you finish this project, you should be able to answer each the questions that follow using a single SQL query.

#load DBI lybrary to use SQL in R
library(DBI)
db = dbConnect(RSQLite::SQLite(), dbname = "db2.sqlite")

1 - How many entries in the countries table are from Africa?

SELECT COUNT (*) 
FROM countries
WHERE continent = "Africa";

2 - What was the total population of the continent of Oceania in 2005?

SELECT SUM(population)
FROM population_years
INNER JOIN countries
ON countries.id = population_years.country_id
WHERE year = 2005
AND continent = 'Oceania';

3 - What is the average population of countries in South America in 2003?

SELECT AVG(population)
FROM population_years
INNER JOIN countries
ON countries.id = population_years.country_id
WHERE year = 2003
AND continent = 'South America';

4 - What country had the smallest population in 2007?

SELECT MIN (population),
name
FROM population_years
INNER JOIN countries
ON countries.id = population_years.country_id
WHERE year = 2007;

5 - What is the average population of Poland during the time period covered by this dataset?

SELECT AVG(population),
name
FROM population_years
INNER JOIN countries ON
countries.id = population_years.country_id
WHERE name= "Poland";

6 - How many countries have the word “The” in their name?

SELECT COUNT(*)
FROM countries
WHERE name LIKE "%The%";

7 - What was the total population of each continent in 2010?

SELECT SUM(population),
continent
FROM population_years
INNER JOIN countries
ON countries.id = population_years.country_id
WHERE year = 2010
GROUP BY continent;
LS0tDQp0aXRsZTogIldvcmxkIFBvcHVsYXRpb24iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIHByb2plY3QgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IHRoYW4gb3RoZXJzIHlvdSBoYXZlIGVuY291bnRlcmVkIHRodXMgZmFyIG9uIENvZGVjYWRlbXkuIEluc3RlYWQgb2YgYSBzdGVwLWJ5LXN0ZXAgdHV0b3JpYWwsIHRoaXMgcHJvamVjdCBjb250YWlucyBhIHNlcmllcyBvZiBvcGVuLWVuZGVkIHJlcXVpcmVtZW50cyB3aGljaCBkZXNjcmliZSB0aGUgcHJvamVjdCB5b3XigJlsbCBiZSBidWlsZGluZy4gVGhlcmUgYXJlIG1hbnkgcG9zc2libGUgd2F5cyB0byBjb3JyZWN0bHkgZnVsZmlsbCBhbGwgb2YgdGhlc2UgcmVxdWlyZW1lbnRzLCBhbmQgeW91IHNob3VsZCBleHBlY3QgdG8gdXNlIHRoZSBpbnRlcm5ldCwgQ29kZWNhZGVteSwgYW5kIG90aGVyIHJlc291cmNlcyB3aGVuIHlvdSBlbmNvdW50ZXIgYSBwcm9ibGVtIHRoYXQgeW91IGNhbm5vdCBlYXNpbHkgc29sdmUuDQoNCllvdeKAmWxsIHdvcmsgd2l0aCBhIGRhdGFzZXQgb2Ygd29ybGQgcG9wdWxhdGlvbiBieSBjb3VudHJ5IGRhdGEgZnJvbSByZWNlbnQgeWVhcnMuIFlvdeKAmWxsIHdyaXRlIHF1ZXJpZXMgdG8gcmV0cmlldmUgaW50ZXJlc3RpbmcgZGF0YSBhbmQgYW5zd2VyIGEgc2V0IG9mIHNwZWNpZmljIHF1ZXN0aW9ucy4NCg0KIyMgUHJvamVjdCAxDQpgYGB7cn0NCiNsb2FkIERCSSBseWJyYXJ5IHRvIHVzZSBTUUwgaW4gUg0KbGlicmFyeShEQkkpDQpkYiA9IGRiQ29ubmVjdChSU1FMaXRlOjpTUUxpdGUoKSwgZGJuYW1lID0gImRiLnNxbGl0ZSIpDQpgYGANCg0KSW4gdGhpcyBwcm9qZWN0LCB5b3XigJlsbCBhbnN3ZXIgcXVlc3Rpb25zIHVzaW5nIGEgZGF0YWJhc2Ugb2Ygd29ybGQgcG9wdWxhdGlvbiBieSBjb3VudHJ5Lg0KDQpUaGUgc2NoZW1hIG9mIHRoZSBkYXRhYmFzZSBpczoNCg0KLSBDb2x1bW46DQogIC0gQ291bnRyeSA9IFNUUklORw0KICAtIHBvcHVsYXRpb24gPSBOVU1CRVIgKGluIG1pbGxpb25zKQ0KICAtIHllYXIgPSBOVU1CRVINCg0KUmVmZXIgdG8gdGhpcyBzY2hlbWEgYXMgeW91IHdyaXRlIHF1ZXJpZXMgdG8gdGhlIGRhdGFiYXNlLg0KDQpXaGVuIHlvdSBmaW5pc2ggdGhpcyBwcm9qZWN0LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gYW5zd2VyIGVhY2ggdGhlIHF1ZXN0aW9ucyB0aGF0IGZvbGxvdyB1c2luZyBhIHNpbmdsZSBTUUwgcXVlcnkuDQoNCjEgLSBUaGUgZmlyc3QgcXVlcnkgaGFzIGFscmVhZHkgYmVlbiB3cml0dGVuIGZvciB5b3UgdG8gYW5zd2VyIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb246DQoNCldoYXQgeWVhcnMgYXJlIGNvdmVyZWQgYnkgdGhlIGRhdGFzZXQ/ICh5b3UgY2FuIG1hbnVhbGx5IGNvdW50IHRoZSBudW1iZXIgb2YgeWVhcnMgcmV0dXJuZWQpLg0KDQpDb250aW51ZSBhZGRpbmcgeW91ciBxdWVyaWVzIGJlbG93IHRoZSBmaXJzdCBvbmUgYXMgeW91IHByb2NlZWQuDQpgYGB7c3FsLCBjb25uZWN0aW9uPWRifQ0KU0VMRUNUIERJU1RJTkNUIHllYXIgZnJvbSBwb3B1bGF0aW9uX3llYXJzOw0KYGBgDQoyIC0gV2hhdCBpcyB0aGUgbGFyZ2VzdCBwb3B1bGF0aW9uIHNpemUgZm9yIEdhYm9uIGluIHRoaXMgZGF0YXNldD8NCmBgYHtzcWwsIGNvbm5lY3Rpb249ZGJ9DQpTRUxFQ1QgTWF4KHBvcHVsYXRpb24pDQpmcm9tIHBvcHVsYXRpb25feWVhcnMNCldIRVJFIGNvdW50cnkgPSAiR2Fib24iOw0KYGBgDQozIC0gV2hhdCB3ZXJlIHRoZSAxMCBsb3dlc3QgcG9wdWxhdGlvbiBjb3VudHJpZXMgaW4gMjAwNT8NCg0KYGBge3NxbCwgY29ubmVjdGlvbj1kYn0NClNFTEVDVCBjb3VudHJ5DQpGUk9NIHBvcHVsYXRpb25feWVhcnMNCldIRVJFIHllYXIgPSAyMDA1DQpPUkRFUiBCWSBwb3B1bGF0aW9uIEFTQyBMSU1JVCAxMDsNCmBgYA0KNCAtIFdoYXQgYXJlIGFsbCB0aGUgZGlzdGluY3QgY291bnRyaWVzIHdpdGggYSBwb3B1bGF0aW9uIG9mIG92ZXIgMTAwIG1pbGxpb24gaW4gdGhlIHllYXIgMjAxMA0KDQpgYGB7c3FsLCBjb25uZWN0aW9uPWRifQ0KU0VMRUNUIERJU1RJTkNUIGNvdW50cnkNCkZST00gcG9wdWxhdGlvbl95ZWFycw0KV0hFUkUgcG9wdWxhdGlvbiA+IDEwMCBhbmQgWUVBUiA9IDIwMTA7DQpgYGANCg0KNSAtIEhvdyBtYW55IGNvdW50cmllcyBpbiB0aGlzIGRhdGFzZXQgaGF2ZSB0aGUgd29yZCDigJxJc2xhbmRz4oCdIGluIHRoZWlyIG5hbWU/DQoNCmBgYHtzcWwsIGNvbm5lY3Rpb249ZGJ9DQpTRUxFQ1QgQ09VTlQgKCopDQpGUk9NIHBvcHVsYXRpb25feWVhcnMNCldIRVJFIGNvdW50cnkgTElLRSAiJUlzbGFuZHMlIjsNCmBgYA0KNiAtIFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgaW4gcG9wdWxhdGlvbiBiZXR3ZWVuIDIwMDAgYW5kIDIwMTAgaW4gSW5kb25lc2lhPw0KDQpOb3RlOiBpdOKAmXMgb2theSB0byBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlIGJ5IGhhbmQgYWZ0ZXIgcHVsbGluZyB0aGUgY29ycmVjdCBkYXRhLg0KDQpgYGB7c3FsLCBjb25uZWN0aW9uPWRifQ0KU0VMRUNUICogDQpGUk9NIHBvcHVsYXRpb25feWVhcnMNCldIRVJFIGNvdW50cnkgPSAiSW5kb25lc2lhIiBhbmQgeWVhciA9IDIwMDANCk9SIGNvdW50cnkgPSAiSW5kb25lc2lhIiBhbmQgeWVhciA9IDIwMTA7DQpgYGANCg0KDQojIyBQcm9qZWN0IDINCg0KVGhlIHNjaGVtYSBvZiB0aGUgZGF0YWJhc2UgaXM6DQoNCmNvdW50cmllczoNCg0KLSBpZCA9IElOVEVHRVIgKFByaW1hcnkgS2V5KQ0KLSBuYW1lID0gVEVYVA0KLSBjb250aW5lbnQgPSBURVhUDQoNCnBvcHVsYXRpb25feWVhcnM6DQoNCi0gaWQgPSBJTlRFR0VSIChQcmltYXJ5IEtleSkNCi0gcG9wdWxhdGlvbiA9IE5VTUJFUiAoaW4gbWlsbGlvbnMpDQotIHllYXIgPSBOVU1CRVINCi0gY291bnRyeV9pZCA9IElOVEVHRVIgKEZvcmVpZ24gS2V5KQ0KDQpSZWZlciB0byB0aGlzIHNjaGVtYSBhcyB5b3Ugd3JpdGUgcXVlcmllcyB0byB0aGUgZGF0YWJhc2UuDQoNCldoZW4geW91IGZpbmlzaCB0aGlzIHByb2plY3QsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBhbnN3ZXIgZWFjaCB0aGUgcXVlc3Rpb25zIHRoYXQgZm9sbG93IHVzaW5nIGEgc2luZ2xlIFNRTCBxdWVyeS4NCg0KYGBge3J9DQojbG9hZCBEQkkgbHlicmFyeSB0byB1c2UgU1FMIGluIFINCmxpYnJhcnkoREJJKQ0KZGIgPSBkYkNvbm5lY3QoUlNRTGl0ZTo6U1FMaXRlKCksIGRibmFtZSA9ICJkYjIuc3FsaXRlIikNCmBgYA0KDQoxIC0gSG93IG1hbnkgZW50cmllcyBpbiB0aGUgY291bnRyaWVzIHRhYmxlIGFyZSBmcm9tIEFmcmljYT8NCg0KYGBge3NxbCwgY29ubmVjdGlvbj1kYn0NClNFTEVDVCBDT1VOVCAoKikgDQpGUk9NIGNvdW50cmllcw0KV0hFUkUgY29udGluZW50ID0gIkFmcmljYSI7DQpgYGANCg0KMiAtIFdoYXQgd2FzIHRoZSB0b3RhbCBwb3B1bGF0aW9uIG9mIHRoZSBjb250aW5lbnQgb2YgT2NlYW5pYSBpbiAyMDA1Pw0KDQpgYGB7c3FsLCBjb25uZWN0aW9uPWRifQ0KU0VMRUNUIFNVTShwb3B1bGF0aW9uKQ0KRlJPTSBwb3B1bGF0aW9uX3llYXJzDQpJTk5FUiBKT0lOIGNvdW50cmllcw0KT04gY291bnRyaWVzLmlkID0gcG9wdWxhdGlvbl95ZWFycy5jb3VudHJ5X2lkDQpXSEVSRSB5ZWFyID0gMjAwNQ0KQU5EIGNvbnRpbmVudCA9ICdPY2VhbmlhJzsNCmBgYA0KDQoNCg0KMyAtIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgcG9wdWxhdGlvbiBvZiBjb3VudHJpZXMgaW4gU291dGggQW1lcmljYSBpbiAyMDAzPw0KDQoNCmBgYHtzcWwsIGNvbm5lY3Rpb249ZGJ9DQpTRUxFQ1QgQVZHKHBvcHVsYXRpb24pDQpGUk9NIHBvcHVsYXRpb25feWVhcnMNCklOTkVSIEpPSU4gY291bnRyaWVzDQpPTiBjb3VudHJpZXMuaWQgPSBwb3B1bGF0aW9uX3llYXJzLmNvdW50cnlfaWQNCldIRVJFIHllYXIgPSAyMDAzDQpBTkQgY29udGluZW50ID0gJ1NvdXRoIEFtZXJpY2EnOw0KYGBgDQo0IC0gV2hhdCBjb3VudHJ5IGhhZCB0aGUgc21hbGxlc3QgcG9wdWxhdGlvbiBpbiAyMDA3Pw0KDQpgYGB7c3FsLCBjb25uZWN0aW9uPWRifQ0KU0VMRUNUIE1JTiAocG9wdWxhdGlvbiksDQpuYW1lDQpGUk9NIHBvcHVsYXRpb25feWVhcnMNCklOTkVSIEpPSU4gY291bnRyaWVzDQpPTiBjb3VudHJpZXMuaWQgPSBwb3B1bGF0aW9uX3llYXJzLmNvdW50cnlfaWQNCldIRVJFIHllYXIgPSAyMDA3Ow0KYGBgDQoNCg0KDQo1IC0gV2hhdCBpcyB0aGUgYXZlcmFnZSBwb3B1bGF0aW9uIG9mIFBvbGFuZCBkdXJpbmcgdGhlIHRpbWUgcGVyaW9kIGNvdmVyZWQgYnkgdGhpcyBkYXRhc2V0Pw0KDQpgYGB7c3FsLCBjb25uZWN0aW9uPWRifQ0KU0VMRUNUIEFWRyhwb3B1bGF0aW9uKSwNCm5hbWUNCkZST00gcG9wdWxhdGlvbl95ZWFycw0KSU5ORVIgSk9JTiBjb3VudHJpZXMgT04NCmNvdW50cmllcy5pZCA9IHBvcHVsYXRpb25feWVhcnMuY291bnRyeV9pZA0KV0hFUkUgbmFtZT0gIlBvbGFuZCI7DQpgYGANCjYgLSBIb3cgbWFueSBjb3VudHJpZXMgaGF2ZSB0aGUgd29yZCDigJxUaGXigJ0gaW4gdGhlaXIgbmFtZT8NCg0KYGBge3NxbCwgY29ubmVjdGlvbj1kYn0NClNFTEVDVCBDT1VOVCgqKQ0KRlJPTSBjb3VudHJpZXMNCldIRVJFIG5hbWUgTElLRSAiJVRoZSUiOw0KYGBgDQoNCg0KNyAtIFdoYXQgd2FzIHRoZSB0b3RhbCBwb3B1bGF0aW9uIG9mIGVhY2ggY29udGluZW50IGluIDIwMTA/DQoNCmBgYHtzcWwsIGNvbm5lY3Rpb249ZGJ9DQpTRUxFQ1QgU1VNKHBvcHVsYXRpb24pLA0KY29udGluZW50DQpGUk9NIHBvcHVsYXRpb25feWVhcnMNCklOTkVSIEpPSU4gY291bnRyaWVzDQpPTiBjb3VudHJpZXMuaWQgPSBwb3B1bGF0aW9uX3llYXJzLmNvdW50cnlfaWQNCldIRVJFIHllYXIgPSAyMDEwDQpHUk9VUCBCWSBjb250aW5lbnQ7DQpgYGA=