I have this, which seems to output what I want. Now I need to put the 2 cases into a function I guess
SELECT
gender,
CASE
WHEN age IS NULL
THEN NULL
WHEN age >= 55
THEN 55
WHEN age >= 45
THEN 45
WHEN age >= 36
THEN 36
WHEN age >= 30
THEN 30
WHEN age >= 25
THEN 25
WHEN age >= 18
THEN 18
ELSE NULL
END
AS "age_from",
CASE
WHEN age IS NULL
THEN NULL
WHEN age <= 17
THEN 17
WHEN age <= 24
THEN 24
WHEN age <= 29
THEN 29
WHEN age <= 35
THEN 35
WHEN age <= 44
THEN 44
WHEN age <= 54
THEN 54
ELSE NULL
END
AS "age_to",
COUNT(population.id) AS "count"
FROM population
join people on population.person_id = people.id
where period_id = 13
GROUP BY
period_id,
age_to,
gender
ORDER BY age_from ASC