Plain-language questions
Ask for training hours per employee 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 · HR
Training hours per employee is the total number of training and learning hours in a period divided by the average headcount. It shows how much time an organisation invests in developing its people. It says nothing about the quality or impact of that training.
Total training hours in the period ÷ average headcount
In 2025 Acme Groothandel employees completed 2,880 hours of training between them, from forklift certificates to management courses. With an average headcount of 144, that is 2,880 ÷ 144 = 20 training hours per employee.
Fictitious figures for Acme Groothandel, a sample wholesaler.
More hours means more time spent on development, but not automatically that people get better at their jobs. Look at the spread: do all departments and levels receive training, or does most of it go to a small group? Set it next to voluntary turnover and development review outcomes to judge the effect.
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.
WITH avg_hc AS (
SELECT AVG(n) AS n
FROM (
SELECT m, COUNT(e.employee_id) AS n
FROM generate_series(DATE '2025-01-01', DATE '2025-12-01', interval '1 month') AS m
JOIN employees e ON e.hire_date <= m AND (e.termination_date IS NULL OR e.termination_date > m)
GROUP BY m
) s
)
SELECT SUM(t.hours) AS training_hours,
ROUND(MAX(h.n), 1) AS avg_headcount,
ROUND(SUM(t.hours) / NULLIF(MAX(h.n), 0), 1) AS training_hours_per_employee
FROM trainings t
CROSS JOIN avg_hc h
WHERE t.training_date >= DATE '2025-01-01' AND t.training_date < DATE '2026-01-01';Avg Headcount =
AVERAGEX (
VALUES ( 'Date'[YearMonth] ),
VAR d = CALCULATE ( MAX ( 'Date'[Date] ) )
RETURN COUNTROWS ( FILTER ( ALL ( Employees ), Employees[HireDate] <= d && ( ISBLANK ( Employees[TerminationDate] ) || Employees[TerminationDate] > d ) ) )
)
Training Hours per Employee = DIVIDE ( SUM ( Trainings[Hours] ), [Avg Headcount] )In ENABLE
Ask for training hours per employee 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
Add up all recorded training hours in the period and divide by the average headcount. To compare capacity, divide by FTE instead of people. Record which types of training you include.
That is a choice, as long as you apply it consistently. E-learning with a recorded duration usually counts; informal learning on the job is hard to measure and is often left out. State the scope next to the figure.
Training hours measure effort, not impact. Combine them with other data, such as internal moves, voluntary turnover or certificates achieved. Track these over a longer period, because effects rarely show straight away.
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.