How to calculate Cost per Hire

Cost per hire is the average total cost of recruiting one new employee.

Formula

Cost per hire = (internal recruiting costs + external recruiting costs) ÷ hires in period

SQL query

This example assumes: recruiting_costs(month, type, amount), hires(id, hired_at). It is written in PostgreSQL syntax; date functions differ slightly in MySQL, BigQuery and SQLite, and your column names will differ from these.

SELECT SUM(c.amount) / NULLIF(h.hires, 0) AS cost_per_hire
FROM recruiting_costs c
CROSS JOIN (SELECT COUNT(*) AS hires FROM hires
            WHERE hired_at >= DATE '2026-01-01' AND hired_at < DATE '2027-01-01') h
WHERE c.month >= DATE '2026-01-01' AND c.month < DATE '2027-01-01'
GROUP BY h.hires;

Common mistakes that make Cost per Hire wrong

  • Internal costs (recruiter salaries, tools) are easy to forget and make the figure too low.
  • Spend and hires in the same period ignore long pipelines.
  • Executive hires cost far more; show the average by level.

Ask for Cost per Hire in plain English

Instead of writing the query yourself, you can type the question. SchemaChat turns it into SQL against your connected database or uploaded file, runs it, and shows the SQL and the figures it used so you can check the answer before you share it. It does not replace your judgement about the definition: check that the query matches the formula your business uses.

  • What was our cost per hire last year?
  • How does cost per hire differ by role type?

Frequently asked questions

What is Cost per Hire?
Cost per hire is the average total cost of recruiting one new employee.
How do you calculate Cost per Hire?
Cost per hire = (internal recruiting costs + external recruiting costs) ÷ hires in period. The SQL example on this page shows the same calculation against a simple table.
What commonly goes wrong when calculating Cost per Hire?
Internal costs (recruiter salaries, tools) are easy to forget and make the figure too low.