Hi Aman,
It's not possible to really help on performance problems without details like action flows and data models and sql executed.
But from your replies so far, it looks like there is a complete process happening, including first producing data into your database from excel source all the way up to displaying the charts. Is that the case ? Every time? Or is data loaded once and charts displayed many times with same data?
Your post title suggested that you have a performance problem in retrieving data for the charts. IN THAT CASE, you could improve performance by storing the data in a more aggregated / chart-ready form (for example storing the count low/medium/high at loading time so you only have to read them instead of reaggregating them at display time)
That's what I meant with 'pull them forward'
And looking at your initial post, I think this might be an option, so that everytime users changes filter on project etc, your sql just has to retrieve different precalculated totals and averages etc. Instead of aggregating them again.
IF HOWEVER you are doing the whole process of loading + displaying every time, the problem might lie in the loading rather than the displaying. Then the real questions are : what is the source of your data, why on earth are you moving large amounts of data around between systems manually, can you load delta information instead of everything, etc.
Dorine