EnableYourData.com

KPI · Projects and time

Average hourly rate: formula and example.

Average hourly rate is the weighted average of the rates for all billable hours in a period. You divide the value of billable hours at rate by the number of billable hours. It shows the price at which you sell your time and how the mix of roles and clients affects that price.

Average hourly rate formula

Sum of (billable hours × hourly rate) ÷ billable hours

Worked example

In September 2026 Acme Groothandel's installation team logged 1,260 billable hours worth €119,700 in total at the agreed rates. The average hourly rate is €119,700 ÷ 1,260 = €95.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A higher average rate means more revenue per billable hour. A fall can be due to discounts, but also to juniors logging more hours than seniors, so look at the mix. Compare with your rate card and with last year, and read it next to the effective hourly rate to see what remains after overruns and write-offs.

Pitfalls with average hourly rate

  • Taking an unweighted average of the rate card instead of averaging by hours worked.
  • Including non-billable hours at a rate of zero, which turns it into a different measure.
  • Including fixed-price projects at a notional rate without making that clear.

SQL & DAX

Calculating average hourly rate 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 date_trunc('month', entry_date)::date AS month,
       SUM(hours) FILTER (WHERE billable) AS billable_hours,
       SUM(hours * hourly_rate) FILTER (WHERE billable) AS value_at_rate,
       ROUND(SUM(hours * hourly_rate) FILTER (WHERE billable)
             / NULLIF(SUM(hours) FILTER (WHERE billable), 0), 2) AS avg_hourly_rate
FROM time_entries
GROUP BY 1
ORDER BY 1;
DAX · Power BI
Value at Rate = SUMX ( FILTER ( TimeEntries, TimeEntries[Billable] = TRUE () ), TimeEntries[Hours] * TimeEntries[HourlyRate] )
Avg Hourly Rate = DIVIDE ( [Value at Rate], CALCULATE ( SUM ( TimeEntries[Hours] ), TimeEntries[Billable] = TRUE () ) )

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for average hourly rate 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 an average hourly rate?

For each time entry, multiply billable hours by the rate, add these up and divide by total billable hours. That way each rate counts in proportion to the hours worked at it. A simple average of the rate card gives a distorted picture.

What is the difference between average and effective hourly rate?

Average hourly rate uses the agreed rates on billable hours. Effective hourly rate divides what you actually invoice by all hours spent. The gap shows how much leaks away through overruns, discounts and write-offs.

Why is my average hourly rate falling?

Usually because of a shift in the mix: more hours from roles with lower rates or more work for clients with discount agreements. New projects at sharper rates also pull the average down. Break the figure down by role and client to find the cause.

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.