CO2 & GHG Emissions Data Analysis
CO2 & Greenhouse Gas Emissions Data Analysis
Technologies used: SQL Server (T-SQL), Excel, Power BI
Dashboard File: CO2_Emissions_Dashboard.pbix
Dataset: CO2-Emissions-DB.xlsx
T-SQL Queries: CO2_Emissions_Queries_1.sql
Github: co2-emission-T-SQL
Needless to say that climate change and global warming are major concerns for the world - ever more so today. CO2 and Greenhouse gas emissions - explained very briefly - trap the solar radiation bounced off the Earth's surface, causing the planet to get warmer.
In this project, I cleaned, analyzed and visualized a dataset (source: Our World In Data) about CO2 and Greenhouse Gas (GHG) emissions from every country from 1750 to 2020.
I utilized Microsoft Excel to clean and break down the data into 5 tables:
- ContinentsCO2EmissionsPerYear
- CountriesCO2EmissionsPerYear
- CountriesEnergyConsumption
- CountriesOtherEmissions
- CountryCO2EmissionPerSourceType
I also added to the dataset the population size of each country from 1750 to 2020. The tables were loaded into SQL Server and analyzed using T-SQL queries. Finally, I created a dashboard (see above) in Microsoft Power BI to visualize essential parts of the data.
Some queries...
See the full list of queries here.
Finding the year with most CO2 emission for each emission source type.
Input:
WITH sum_src_emission AS (
SELECT year AS [Year],
SUM(coal_co2) AS coal_co2,
SUM(cement_co2) AS cement_co2,
SUM(flaring_co2) AS flaring_co2,
SUM(gas_co2) AS gas_co2,
SUM(oil_co2) AS oil_co2,
SUM(other_industry_co2) AS other_industry_co2
FROM CO2EmissionsDB..CountryCO2EmissionPerSourceType
GROUP BY [Year]
),
unpivoted_src_emission AS (
SELECT *
FROM (
SELECT *
FROM sum_src_emission
) AS a
UNPIVOT (
SourceCO2Emission FOR Sources IN (
coal_co2,
cement_co2,
flaring_co2,
gas_co2,
oil_co2,
other_industry_co2
)
) AS p
),
emission_group_by_yr_source AS (
SELECT Sources,
MAX(SourceCO2Emission) AS MaxSrcCO2Emission
FROM unpivoted_src_emission
GROUP BY Sources
)
SELECT unpivotedTable.[Year],
unpivotedTable.SourceCO2Emission AS [Source CO2 Emission],
SUBSTRING(REPLACE(unpivotedTable.Sources, '_', ' '), 1, LEN(unpivotedTable.Sources) - 4) AS [Source]
FROM emission_group_by_yr_source maxEmission
INNER JOIN unpivoted_src_emission unpivotedTable
ON maxEmission.Sources = unpivotedTable.Sources AND
maxEmission.MaxSrcCO2Emission = unpivotedTable.SourceCO2Emission
Output:
Year | Source CO2 Emission (in million tonnes) | Source |
2019 | 7562.807 | gas |
2019 | 11002.896 | oil |
2014 | 15064.781 | coal |
2014 | 304.664 | other industry |
2020 | 1626.533 | cement |
2020 | 436.052 | flaring |
• The most CO2 emission for each source type happened after 2010. 🤔
• Coal had the highest maximum CO2 emission (~15k million tonnes) out of all source types in the
dataset.
Finding the top 10 countries with highest CO2 emission per capita in 2011.
Input:
SELECT TOP(10) country AS Country,
MAX([co2_per_capita]) AS [CO2 Per Capita]
FROM CO2EmissionsDB..CountriesCO2EmissionsPerYear
WHERE co2 IS NOT NULL AND
year = 2011 AND
gdp IS NOT NULL
GROUP BY country
ORDER BY [CO2 Per Capita] DESC
Output:
Country | CO2 Per Capita |
Qatar | 39.122 |
Trinidad and Tobago | 34.936 |
Kuwait | 27.229 |
Bahrain | 22.272 |
United Arab Emirates | 21.571 |
Luxembourg | 21.379 |
United States | 17.781 |
Saudi Arabia | 17.605 |
Canada | 16.499 |
Oman | 16.448 |
• Recall that Qatar was - and still is at the time of writing - the largest Liquefied Natural Gas (LNG) producer in 2011 and has a fairly small population compared to other countries.
For each country, find the major source of C02 emission in the year with their record-high C02 emission
Input:
WITH max_co2_per_country AS (
SELECT country AS [Country],
year AS [Year],
co2 AS CO2,
MAX(co2) OVER (PARTITION BY country) AS [Max CO2 Emission]
FROM CO2EmissionsDB..CountriesCO2EmissionsPerYear
WHERE co2 IS NOT NULL
),
max_co2_per_country2 AS (
SELECT [Country], [Year], [Max CO2 Emission]
FROM max_co2_per_country
WHERE [MAX CO2 Emission] = co2
),
max_co2_shares AS (
SELECT perCountry.[Country],
perCountry.[Year],
perCountry.[Max CO2 Emission],
perSrc.coal_co2 / perCountry.[Max CO2 Emission] AS [Coal Share],
perSrc.cement_co2 / perCountry.[Max CO2 Emission] AS [Cement Share],
perSrc.flaring_co2 / perCountry.[Max CO2 Emission] AS [Flaring Share],
perSrc.gas_co2 / perCountry.[Max CO2 Emission] AS [Gas Share],
perSrc.oil_co2 / perCountry.[Max CO2 Emission] AS [Oil Share],
perSrc.other_industry_co2 / perCountry.[Max CO2 Emission] AS [Other Industry Share]
FROM max_co2_per_country2 perCountry
INNER JOIN CO2EmissionsDB..CountryCO2EmissionPerSourceType perSrc
ON perCountry.[Country] = perSrc.country AND
perCountry.[Year] = perSrc.year
),
cross_apply_src_shares AS (
SELECT ms.[Country], ms.[Year], ms.[Max CO2 Emission],
t.[Source Type], t.[CO2 Emission Share]
FROM max_co2_shares ms
CROSS APPLY (
VALUES
('coal', ms.[Coal Share]),
('cement', ms.[Cement Share]),
('flaring', ms.[Flaring Share]),
('Gas', ms.[Gas Share]),
('oil', ms.[Oil Share]),
('Other Industry', ms.[Other Industry Share])
) t ([Source Type], [CO2 Emission Share])
)
SELECT c1.[Country], c1.[Year], c1.[Source Type],
ROUND(c1.[Max CO2 Emission], 3) AS [Max CO2 Emission],
ROUND(c1.[CO2 Emission Share], 3) AS [Source CO2 Emission Share]
FROM cross_apply_src_shares c1
WHERE c1.[CO2 Emission Share] = (
SELECT MAX(c2.[CO2 Emission Share])
FROM cross_apply_src_shares c2
WHERE c1.[Country] = c2.[Country]
)
Output:
Country | Year | Source Type | Max CO2 Emission | Source CO2 Emission Share |
Afghanistan | 2020 | coal | 12.16 | 0.617 |
Albania | 1989 | oil | 8.977 | 0.456 |
Algeria | 2019 | Gas | 166.642 | 0.555 |
Andorra | 2005 | oil | 0.575 | 1 |
Angola | 2012 | oil | 33.801 | 0.511 |
Anguilla | 2015 | oil | 0.154 | 1 |
Anguilla | 2016 | oil | 0.154 | 1 |
Antigua and Barbuda | 1969 | oil | 1.257 | 1 |
Argentina | 2015 | Gas | 192.406 | 0.486 |
Armenia | 1989 | Gas | 9.523 | 0.485 |
Aruba | 2007 | oil | 2.821 | 1 |
Austria | 2005 | oil | 79.068 | 0.498 |
Azerbaijan | 1992 | oil | 56.174 | 0.556 |
Bahamas | 1977 | oil | 9.709 | 0.996 |
Bahrain | 2020 | Gas | 34.96 | 0.882 |
Bangladesh | 2019 | Gas | 94.215 | 0.639 |
Barbados | 2008 | oil | 1.612 | 0.889 |
Belarus | 1986 | oil | 121.013 | 0.778 |
Belgium | 1979 | oil | 139.787 | 0.485 |
Belize | 2019 | oil | 0.658 | 0.986 |
Benin | 2019 | oil | 7.315 | 0.966 |
Bermuda | 1989 | oil | 0.78 | 1 |
Bhutan | 2019 | coal | 1.927 | 0.502 |
Bolivia | 2018 | oil | 23.856 | 0.54 |
Bonaire Sint Eustatius and Saba | 1976 | oil | 0.939 | 1 |
Bosnia and Herzegovina | 2019 | coal | 24.847 | 0.776 |
Botswana | 2018 | coal | 7.561 | 0.612 |
Brazil | 2014 | oil | 557.901 | 0.639 |
British Virgin Islands | 2014 | oil | 0.213 | 1 |
British Virgin Islands | 2015 | oil | 0.213 | 1 |
British Virgin Islands | 2016 | oil | 0.213 | 1 |
Brunei | 1949 | oil | 11.468 | 0.898 |
Bulgaria | 1987 | coal | 91.273 | 0.458 |
Burkina Faso | 2019 | oil | 4.336 | 0.972 |
Burundi | 2019 | oil | 0.704 | 0.939 |
Cambodia | 2019 | oil | 15.329 | 0.487 |
Cameroon | 2018 | oil | 7.932 | 0.671 |
Canada | 2007 | oil | 594.665 | 0.448 |
Cape Verde | 2011 | oil | 0.616 | 1 |
Central African Republic | 1987 | oil | 0.26 | 1 |
Chad | 2011 | oil | 1.118 | 1 |
Chile | 2019 | oil | 86.129 | 0.541 |
China | 2020 | coal | 10667.887 | 0.696 |
Christmas Island | 1975 | oil | 0.136 | 1 |
Colombia | 2016 | oil | 93.242 | 0.488 |
Comoros | 2019 | oil | 0.306 | 1 |
Congo | 2016 | oil | 3.702 | 0.597 |
Cook Islands | 2019 | oil | 0.079 | 1 |
Cook Islands | 2020 | oil | 0.079 | 1 |
Costa Rica | 2019 | oil | 8.818 | 0.916 |
Cote d'Ivoire | 2017 | oil | 11.86 | 0.636 |
Croatia | 2007 | oil | 24.866 | 0.543 |
Cuba | 1989 | oil | 35.719 | 0.942 |
Curacao | 1976 | oil | 17.589 | 1 |
Cyprus | 2008 | oil | 8.714 | 0.884 |
Czechia | 1978 | coal | 184.394 | 0.759 |
Democratic Republic of Congo | 2014 | oil | 4.631 | 0.971 |
Denmark | 1996 | coal | 74.852 | 0.469 |
Djibouti | 2013 | oil | 0.557 | 0.894 |
Dominica | 2007 | oil | 0.183 | 1 |
Dominican Republic | 2020 | oil | 27.769 | 0.566 |
Ecuador | 2014 | oil | 43.207 | 0.87 |
Egypt | 2017 | oil | 250.605 | 0.475 |
El Salvador | 2019 | oil | 6.853 | 0.943 |
Equatorial Guinea | 2017 | Gas | 12.285 | 0.501 |
Eritrea | 1996 | oil | 0.898 | 0.979 |
Estonia | 1989 | coal | 38.869 | 0.675 |
Eswatini | 2013 | oil | 1.4 | 0.517 |
Ethiopia | 2019 | oil | 16.371 | 0.695 |
Faeroe Islands | 2001 | oil | 0.762 | 1 |
Fiji | 2020 | oil | 1.393 | 0.961 |
Finland | 2003 | coal | 72.658 | 0.482 |
France | 1973 | oil | 537.407 | 0.679 |
French Equatorial Africa | 1958 | oil | 0.429 | 1 |
French Guiana | 1993 | oil | 0.859 | 1 |
French Polynesia | 2020 | oil | 0.828 | 1 |
French West Africa | 1957 | oil | 1.403 | 0.943 |
Gabon | 1978 | oil | 7.555 | 0.586 |
Gambia | 2019 | oil | 0.547 | 0.993 |
Georgia | 1988 | Gas | 16.315 | 0.502 |
Germany | 1979 | coal | 1117.888 | 0.491 |
Ghana | 2019 | oil | 16.918 | 0.699 |
Greece | 2007 | oil | 114.592 | 0.472 |
Greenland | 2011 | oil | 0.725 | 1 |
Grenada | 2019 | oil | 0.332 | 1 |
Guadeloupe | 2019 | oil | 2.562 | 0.817 |
Guadeloupe | 2020 | oil | 2.562 | 0.817 |
Guatemala | 2019 | oil | 21.934 | 0.618 |
Guinea | 2019 | oil | 3.717 | 1 |
Guinea-Bissau | 2019 | oil | 0.314 | 1 |
Guyana | 2019 | oil | 2.487 | 0.935 |
Haiti | 2018 | oil | 3.368 | 0.977 |
Honduras | 2019 | oil | 10.789 | 0.929 |
Hong Kong | 2014 | coal | 45.492 | 0.678 |
Hungary | 1984 | coal | 90.561 | 0.407 |
Iceland | 2008 | oil | 3.811 | 0.766 |
India | 2019 | coal | 2625.968 | 0.639 |
Indonesia | 2019 | coal | 660.594 | 0.477 |
Iran | 2020 | Gas | 745.035 | 0.583 |
Iraq | 2019 | oil | 222.991 | 0.657 |
Ireland | 2005 | oil | 48.156 | 0.535 |
Israel | 2012 | oil | 74.785 | 0.47 |
Italy | 2005 | oil | 502.26 | 0.477 |
Jamaica | 2006 | oil | 11.577 | 0.967 |
Japan | 2013 | oil | 1315.343 | 0.412 |
Jordan | 2014 | oil | 25.895 | 0.866 |
Kazakhstan | 2018 | coal | 317.28 | 0.552 |
Kenya | 2019 | oil | 18.347 | 0.796 |
Kiribati | 2019 | oil | 0.068 | 1 |
Kiribati | 2020 | oil | 0.068 | 1 |
Kuwait | 2016 | oil | 100.859 | 0.551 |
Kyrgyzstan | 1985 | oil | 22.564 | 0.43 |
Laos | 2019 | coal | 33.932 | 0.862 |
Latvia | 1985 | oil | 25.687 | 0.714 |
Lebanon | 2017 | oil | 27.977 | 0.892 |
Leeward Islands | 1955 | oil | 0.033 | 0.879 |
Leeward Islands | 1956 | oil | 0.033 | 0.879 |
Lesotho | 2012 | coal | 3.092 | 0.808 |
Liberia | 1980 | oil | 2.038 | 0.976 |
Libya | 2014 | oil | 71.39 | 0.579 |
Liechtenstein | 2006 | oil | 0.231 | 0.684 |
Lithuania | 1985 | oil | 40.311 | 0.686 |
Luxembourg | 1974 | coal | 14.424 | 0.64 |
Macao | 2015 | oil | 2.028 | 0.885 |
Madagascar | 2018 | oil | 4.167 | 0.624 |
Malawi | 2019 | oil | 1.588 | 0.819 |
Malaysia | 2019 | oil | 278.659 | 0.313 |
Maldives | 2020 | oil | 1.796 | 1 |
Mali | 2019 | oil | 3.688 | 0.931 |
Malta | 2003 | oil | 2.979 | 1 |
Marshall Islands | 2019 | oil | 0.151 | 1 |
Marshall Islands | 2020 | oil | 0.151 | 1 |
Martinique | 2005 | oil | 2.441 | 1 |
Mauritania | 2019 | oil | 3.698 | 1 |
Mauritius | 2017 | oil | 4.536 | 0.607 |
Mayotte | 2019 | oil | 0.306 | 1 |
Mayotte | 2020 | oil | 0.306 | 1 |
Mexico | 2012 | oil | 496.3 | 0.585 |
Micronesia (country) | 2020 | oil | 0.148 | 1 |
Moldova | 1985 | oil | 41.765 | 0.599 |
Mongolia | 2019 | coal | 88.691 | 0.946 |
Montenegro | 2019 | coal | 2.645 | 0.625 |
Montserrat | 2010 | oil | 0.062 | 1 |
Morocco | 2019 | oil | 68.217 | 0.534 |
Mozambique | 2017 | oil | 8.323 | 0.712 |
Myanmar | 2020 | oil | 36.326 | 0.545 |
Namibia | 2017 | oil | 4.216 | 0.883 |
Nauru | 1986 | oil | 0.161 | 1 |
Nepal | 2019 | oil | 16.967 | 0.429 |
Netherlands | 1979 | oil | 187.007 | 0.479 |
New Caledonia | 2019 | coal | 8.706 | 0.665 |
New Zealand | 2008 | oil | 37.713 | 0.5 |
Nicaragua | 2019 | oil | 5.673 | 0.938 |
Niger | 2014 | oil | 2.075 | 0.809 |
Nigeria | 2019 | oil | 130.104 | 0.528 |
Niue | 2014 | oil | 0.011 | 1 |
Niue | 2018 | oil | 0.011 | 1 |
Niue | 2019 | oil | 0.011 | 1 |
Niue | 2020 | oil | 0.011 | 1 |
North Korea | 1989 | coal | 213.072 | 0.902 |
North Macedonia | 1988 | coal | 14.383 | 0.596 |
Norway | 2007 | oil | 45.714 | 0.534 |
Oceania | 2019 | coal | 471.189 | 0.373 |
Oman | 2017 | Gas | 65.906 | 0.721 |
Pakistan | 2018 | oil | 238.306 | 0.42 |
Palau | 2007 | oil | 0.253 | 1 |
Palestine | 2017 | oil | 3.268 | 1 |
Panama | 2019 | oil | 12.294 | 0.794 |
Papua New Guinea | 2020 | oil | 6.652 | 0.848 |
Paraguay | 2019 | oil | 8.525 | 0.951 |
Peru | 2010 | oil | 57.173 | 0.406 |
Philippines | 2019 | coal | 146.615 | 0.473 |
Poland | 1987 | coal | 463.733 | 0.851 |
Portugal | 2002 | oil | 69.749 | 0.621 |
Puerto Rico | 1920 | oil | 0.209 | 1 |
Qatar | 2019 | Gas | 115.037 | 0.822 |
Reunion | 2019 | oil | 4.588 | 0.541 |
Reunion | 2020 | oil | 4.588 | 0.541 |
Romania | 1989 | coal | 213.599 | 0.391 |
Russia | 1990 | oil | 2525.518 | 0.352 |
Rwanda | 2019 | oil | 1.187 | 0.837 |
Ryukyu Islands | 1972 | oil | 9.005 | 0.986 |
Saint Helena | 2016 | oil | 0.015 | 1 |
Saint Kitts and Nevis | 2018 | oil | 0.245 | 1 |
Saint Lucia | 2018 | oil | 0.509 | 1 |
Saint Pierre and Miquelon | 1989 | oil | 0.103 | 1 |
Saint Pierre and Miquelon | 1991 | oil | 0.103 | 1 |
Saint Vincent and the Grenadines | 2009 | oil | 0.278 | 1 |
Samoa | 2020 | oil | 0.246 | 1 |
Sao Tome and Principe | 2018 | oil | 0.132 | 1 |
Saudi Arabia | 2015 | oil | 674.878 | 0.615 |
Senegal | 2018 | oil | 11.33 | 0.614 |
Serbia | 2006 | coal | 60.838 | 0.659 |
Seychelles | 2019 | oil | 0.581 | 1 |
Sierra Leone | 2014 | oil | 1.11 | 1 |
Singapore | 2009 | oil | 90.098 | 0.848 |
Sint Maarten (Dutch part) | 1976 | oil | 2.098 | 1 |
Slovakia | 1990 | coal | 61.475 | 0.547 |
Slovenia | 2008 | oil | 18.25 | 0.481 |
Solomon Islands | 2013 | oil | 0.374 | 1 |
Somalia | 1988 | oil | 1.004 | 0.978 |
South Africa | 2009 | coal | 502.259 | 0.822 |
South Korea | 2018 | coal | 671.631 | 0.507 |
South Sudan | 2015 | oil | 1.913 | 1 |
Spain | 2005 | oil | 369.681 | 0.512 |
Sri Lanka | 2017 | oil | 23.03 | 0.705 |
St. Kitts-Nevis-Anguilla | 1980 | oil | 0.051 | 1 |
Sudan | 2019 | oil | 22.031 | 0.929 |
Suriname | 2014 | oil | 2.809 | 0.986 |
Sweden | 1970 | oil | 92.287 | 0.902 |
Switzerland | 1973 | oil | 46.203 | 0.904 |
Syria | 2008 | oil | 66.877 | 0.791 |
Taiwan | 2017 | coal | 284.812 | 0.577 |
Tajikistan | 1985 | oil | 13.107 | 0.594 |
Tanzania | 2019 | oil | 12.043 | 0.602 |
Thailand | 2013 | oil | 287.598 | 0.417 |
Timor | 2014 | oil | 0.608 | 0.844 |
Togo | 2009 | oil | 2.741 | 0.801 |
Tonga | 2017 | oil | 0.158 | 1 |
Trinidad and Tobago | 2010 | Gas | 46.957 | 0.895 |
Tunisia | 2019 | oil | 30.011 | 0.46 |
Turkey | 2017 | coal | 425.329 | 0.371 |
Turkmenistan | 2019 | Gas | 76.319 | 0.711 |
Turks and Caicos Islands | 2018 | oil | 0.234 | 1 |
Tuvalu | 1990 | oil | 0.011 | 1 |
Tuvalu | 1995 | oil | 0.011 | 1 |
Tuvalu | 1998 | oil | 0.011 | 1 |
Tuvalu | 2001 | oil | 0.011 | 1 |
Tuvalu | 2002 | oil | 0.011 | 1 |
Tuvalu | 2003 | oil | 0.011 | 1 |
Tuvalu | 2004 | oil | 0.011 | 1 |
Tuvalu | 2006 | oil | 0.011 | 1 |
Tuvalu | 2007 | oil | 0.011 | 1 |
Tuvalu | 2008 | oil | 0.011 | 1 |
Tuvalu | 2009 | oil | 0.011 | 1 |
Tuvalu | 2010 | oil | 0.011 | 1 |
Tuvalu | 2011 | oil | 0.011 | 1 |
Tuvalu | 2012 | oil | 0.011 | 1 |
Tuvalu | 2013 | oil | 0.011 | 1 |
Uganda | 2019 | oil | 5.721 | 0.935 |
Ukraine | 1985 | coal | 742.189 | 0.5 |
United Arab Emirates | 2015 | Gas | 216.583 | 0.619 |
United Kingdom | 1971 | coal | 660.388 | 0.517 |
United States | 2005 | oil | 6134.521 | 0.425 |
Uruguay | 2012 | oil | 8.592 | 0.947 |
Uzbekistan | 2002 | Gas | 127.518 | 0.8 |
Vanuatu | 2020 | oil | 0.182 | 1 |
Venezuela | 2013 | oil | 207.425 | 0.618 |
Vietnam | 2019 | coal | 260.312 | 0.476 |
Wallis and Futuna | 2005 | oil | 0.029 | 1 |
Wallis and Futuna | 2006 | oil | 0.029 | 1 |
Wallis and Futuna | 2007 | oil | 0.029 | 1 |
Wallis and Futuna | 2009 | oil | 0.029 | 1 |
Wallis and Futuna | 2010 | oil | 0.029 | 1 |
Yemen | 2013 | oil | 24.976 | 0.854 |
Zambia | 2018 | oil | 7.313 | 0.479 |
Zimbabwe | 1994 | coal | 17.394 | 0.779 |
• At a glance, it seems most countries' major source of CO2 emission is oil-related. 🤔
Citations
Hannah Ritchie, Max Roser and Pablo Rosado (2020) - "CO₂ and Greenhouse Gas Emissions". Published online at OurWorldInData.org. Retrieved from: 'https://ourworldindata.org/co2- and-other-greenhouse-gas-emissions' [Online Resource]