You could store results at a higher level, the higher the level the least number crunching.
In the ideal situation you could store the totals on the Programmes level. but this all depend on which level the mutations are done.
you could also use a serversided script to update the totals every xx minutes, to move the load to the server.
Hope that helps,
Ruben van den Boogaard
The problem is we need to see the figures at all levels. However I do like your server script suggestion. What type of field would the totals be and how would you specify them being updated?
typically in these kinds of calculations you want to be careful using calculations as they tend to show historic data if at some point you change the calculation (ro maybe even if the exchange rate changes). While it is more work you would set totals and calculated values by scripts and events.