EnableYourData.com

KPI · Projects and time

Hours variance: formula and example.

Hours variance is the difference between the hours actually spent and the hours budgeted, expressed in hours or as a percentage of the budget. A positive variance is an overrun, a negative one an underrun. It shows how well you estimate and whether projects stay within their hours budget.

Hours variance formula

(Actual hours − budgeted hours) ÷ budgeted hours × 100%

Worked example

Acme Groothandel budgeted 500 hours for a warehouse fit-out. 600 hours were spent. The hours variance is 600 − 500 = 100 hours, or 100 ÷ 500 × 100% = +20%.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A positive variance means the project took more hours than budgeted, which on a fixed price hits the margin directly. A large negative variance is also a signal: the budget may have been too generous or work may have been left undone. Review variances by project phase and type of work to improve your estimates.

Pitfalls with hours variance

  • Changing budgeted hours mid-project without keeping the original budget, so the variance disappears.
  • Counting extra work the client pays for as an overrun; budget it as a separate item.
  • Looking only at the project total when the variance per phase shows where estimates go wrong.

SQL & DAX

Calculating hours variance in SQL and DAX

Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.

SQL · PostgreSQL
SELECT p.project_id,
       p.budget_hours,
       SUM(t.hours) AS actual_hours,
       SUM(t.hours) - p.budget_hours AS hours_variance,
       ROUND(100.0 * (SUM(t.hours) - p.budget_hours) / NULLIF(p.budget_hours, 0), 1) AS hours_variance_pct
FROM projects p
JOIN time_entries t ON t.project_id = p.project_id
WHERE p.actual_end IS NOT NULL
GROUP BY p.project_id, p.budget_hours
ORDER BY hours_variance_pct DESC;
DAX · Power BI
Hours Variance = SUM ( TimeEntries[Hours] ) - SUM ( Projects[BudgetHours] )
Hours Variance % = DIVIDE ( [Hours Variance], SUM ( Projects[BudgetHours] ) )

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for hours variance per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.

Read more →

In your Power BI dashboard

Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.

Read more →

Custom dashboards (pilot)

Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

How do you calculate hours variance?

Subtract budgeted hours from actual hours spent. Divide the difference by budgeted hours and multiply by 100% for a percentage. A positive result is an overrun.

What is an acceptable hours variance?

It depends on the type of work and how predictable it is up front. Many organisations agree a tolerance band within which a variance needs no action. More important than any single project is whether variances consistently go one way.

How can you prevent hours overruns?

Track hours per phase during the project rather than afterwards, and record extra work straight away. Use the variances from completed projects to make new budgets more realistic. That way the next estimate improves.

Use AI on your own data. Securely, and without the headache.

In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.