This document explains various methods of running and customizing reports in CiviCRM.
These are the reports which ship with CiviCRM, plus extension reports we have implemented in the "wmf_reports" module. There is documentation on writing custom reports, and some scattered forums on using reports. Writing a new custom report is not too terrible, but plan at least 4-8 hours per report.
Reports can be extensively customized by the end-user, the UI allows column selection, grouping, and filtering. The report is called a "template" until it has been customized, and then the custom criteria is called a report "instance". Be very aware that the "Update report" button will actually overwrite the existing report with your customizations. If you want to experiment with criteria, use the "Preview report" button instead. When you're happy with the criteria, you can save a new instance by expanding "Report Settings" and renaming the "Report Title" to describe the criteria you have set. Then, click the "Save As" button.
I've written an expose on how two of our report methods were developed.
This report gives breakdowns of income which can be grouped by time, processing gateway, currency, and country.
This is half-deprecated. It depends on public_reporting tables. The output compares contributions within each country against the previous day's totals. It is used to get a visual, ballpark-resolution answer to "did we just lose credit card processing in Paraguay?"
Search results (and report output) can be exported as CSV.
It's not well-supported by CiviCRM, but we can write custom exports such as "Contacts and Contributions".
Contacts and contributions
Go to Civi Advanced Search, and set "Display Results as". When you want to export a result set, "Select Records" -> "All N records", then "Actions" -> "Export Contacts and Contributions" -> "Go"