Pulling it all together 

WITH
    current_staff AS (
        SELECT *
        FROM person
        WHERE active
        AND (
            leaving_date IS NULL
            OR leaving_date >= CURRENT_DATE
        )
        AND (start_date <= CURRENT_DATE)
    ),
    country_headcount AS (
        SELECT o.country, count(*) AS headcount
        FROM current_staff s
        JOIN office o ON (s.office_id = o.id)
        GROUP BY 1
    )
SELECT ch.country, o.city, count(*), ch.headcount AS country_total
FROM current_staff cs
JOIN office o ON (cs.office_id = o.id)
JOIN country_headcount ch ON (o.country = ch.country)
GROUP BY 4, 1, 2
ORDER BY 4 DESC, 1, 3 DESC, 2;