Welcome to Part 2 of our “Actually Useful Maths for Data Work” series.
Written by our very own Anthony Fawkes, this five-part series will provide fundraisers, data managers, analysts, and CRM heroes holding charity operations together with easy-to-apply solutions that strip away the stress from maths. The aim is to show you how everyday calculations (and a bit of logic) can level up your data confidence.
Why Knowing Your Way Around A JOIN Means You’ve Got This
You know what’s funny? I’ve met plenty of database pros who can optimise a query faster than you can say “LEFT OUTER JOIN”- but the second someone asks for a median or a percentage change, they freeze. And I get it. “Maths” still carries the weight of exams, teachers, and those weird word problems with two trains leaving different stations. But here’s the thing: if you’re working with data, especially in fundraising, you’re already doing the hard bit. You’re thinking logically, spotting patterns, and translating raw numbers into something useful.
Quick Fixes That Change Everything
- Averages That Don’t Lie Let’s say a board member asks: “What’s our average donation?” You check the data. It’s £250. Except it isn’t. That figure’s been inflated by a handful of major donors.Most people gave £20. The median? £22.
- Spotting Drop-Off Before It Happens
You’re tracking monthly donor retention. It looks steady on paper – around 70%. All good? Maybe not. By finding the mode you might spot that Month 3 is when things fall apart. - Turning Raw Numbers Into Meaning
Answering questions like “Are we raising more from companies than last year?” or “Is this event pulling its weight?” isn’t about gut feeling-it’s about percentage change.
You’ve Already Got the Brain for This
You debug weird data issues. You think in logic. You spot patterns others miss. That is maths – it’s just not how we were taught to think of it.
How These Look in SQL, Excel, Power BI DAX
Calculation | SQL | Excel Formula | Power BI DAX |
---|---|---|---|
Mean (Average) | AVG(DonationAmount) | =AVERAGE(A2:A100) | AVERAGE(‘Table'[DonationAmount]) |
Median | Depends on SQL flavour | =MEDIAN(A2:A100) | MEDIAN(‘Table'[DonationAmount]) |
Mode | Use frequency logic | =MODE.SNGL(A2:A100) | Use MAX + COUNTROWS or visuals |
% Change | Custom calc | =(B2-A2)/A2*100 | DIVIDE([Current]-[Previous],[Previous],0)*100 |
Sum | SUM(DonationAmount) | =SUM(A2:A100) | SUM(‘Table'[DonationAmount]) |
Count | COUNT(*) | =COUNTA(A2:A100) | COUNT(‘Table'[Column]) |
A Word on Python
If your team’s embedding analytics into internal processes – things like automated retention flagging or income forecasting – Python helps automate logic, connect to CRMs, and build useful workflows.
TL;DR: You’ve Got This
If you can write SQL, you can understand percentages. If you can debug a NULL, you can spot a dodgy average. The difference between an “OK” report and a “let’s act on this” report? Often, it’s just the right metric.
Coming Up Next in the Series…
- Post 3: Forecasting for Fundraisers – Turning Gut Feelings into Data-backed Plans
- Future Topics: Attrition Modelling, and Python Automation
Want The Rest Of The Series Now?
The full series of posts is available to download right now! Sign up for our newsletter and we’ll send a copy straight to your inbox.