Aggregate before joining tables
You have a list of the following items:
- African athletes participating in past Olympics
- Country GDP per capita
- Population by year
For simplification, the annual demographics (GDP and population) have been grouped into low, medium, and high categories. Your job is to compare each African country's GDP, population, and athlete count.
You want the final answer to have one row per country, per year. Because the athletes
table is on a different grain (athlete-event) than the demographics_rank
table (country-year), you will first aggregate the athletes
table before joining it to the GDP and population data.
This exercise is part of the course
Improving Query Performance in PostgreSQL
Hands-on interactive exercise
Have a go at this exercise by completing this sample code.
-- Count the number of athletes by country
SELECT country_code
, year
, ___(___) AS no_athletes
FROM athletes
GROUP BY ___, ___;