What you're asking really depends on what you put in your annual report. We just base it on total cash giving for the year (i.e., no pledges).
So for ours, I just export Sort Key, our Publish-As salutation, and summary gift information for the year. Then I pull the list into Access and write a Switch function that breaks it into categories. It looks like this:
Category: Switch([CnSmryGft_1_Total_Gift_amount]<1000,500,
[CnSmryGft_1_Total_Gift_amount] Between 1000 And 4999.99,1000,
[CnSmryGft_1_Total_Gift_amount] Between 5000 And 9999.99,5000,
[CnSmryGft_1_Total_Gift_amount] Between 10000 And 24999.99,10000,
[CnSmryGft_1_Total_Gift_amount] Between 25000 And 49999.99,25000,
[CnSmryGft_1_Total_Gift_amount] Between 50000 And 99999.99,50000,
[CnSmryGft_1_Total_Gift_amount] Between 100000 And 1000000,100000,
[CnSmryGft_1_Total_Gift_amount]>999999.99,1000000)
Then you can sort by that field, and we usually export it to excel so our Editorial and Graphic Design department can pull it all together easily.