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.
KPI · Projects and time
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.
Sum of (billable hours × hourly rate) ÷ billable hours
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.
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.
SQL & 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.
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;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
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.
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.
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.
With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.
FAQ
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.
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.
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.
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.