Plain-language questions
Ask for absenteeism 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 · HR
The absenteeism rate is the share of available working time that employees are absent because of sickness. You divide the number of sick days by the number of available days, usually weighted by FTE. It is the best-known absence figure and the starting point for conversations about workload, wellbeing and cost.
Sick days (FTE-weighted) ÷ available FTE days × 100%
In 2025 Acme Groothandel averaged 128 FTE. With 260 working days that gives 128 × 260 = 33,280 available FTE days. 1,664 sick days were recorded. The absenteeism rate is 1,664 ÷ 33,280 × 100% = 5.0%.
Fictitious figures for Acme Groothandel, a sample wholesaler.
A higher rate means more working time is lost to sickness. Compare it with the same period last year, because absence moves with the seasons, and break it down by department to see where the difference lies. Always read it alongside absence frequency and average absence duration: lots of short spells call for a different response than a few long-term cases.
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 months AS (
SELECT generate_series(DATE '2025-01-01', DATE '2025-12-01', interval '1 month')::date AS month
),
available AS (
SELECT m.month, SUM(e.fte) * 21 AS fte_days -- assumption: 21 working days per month
FROM months m
JOIN employees e ON e.hire_date < m.month + interval '1 month'
AND (e.termination_date IS NULL OR e.termination_date >= m.month)
GROUP BY m.month
),
sick AS (
SELECT date_trunc('month', start_date)::date AS month, SUM(sick_days) AS sick_days
FROM absences
GROUP BY 1
)
SELECT a.month, ROUND(100.0 * COALESCE(s.sick_days, 0) / NULLIF(a.fte_days, 0), 1) AS absenteeism_pct
FROM available a
LEFT JOIN sick s ON s.month = a.month
ORDER BY a.month;Sick Days = SUM ( Absences[SickDays] )
Absenteeism % =
VAR d = MAX ( 'Date'[Date] )
VAR ActiveFTE = SUMX ( FILTER ( ALL ( Employees ), Employees[HireDate] <= d && ( ISBLANK ( Employees[TerminationDate] ) || Employees[TerminationDate] > d ) ), Employees[FTE] )
VAR Workdays = CALCULATE ( COUNTROWS ( 'Date' ), 'Date'[IsWorkday] = TRUE () )
RETURN DIVIDE ( [Sick Days], ActiveFTE * Workdays )In ENABLE
Ask for absenteeism 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
Divide the number of sick days by the number of available days and multiply by 100%. Weight both by FTE so a part-timer does not count as much as a full-timer. Decide up front whether you use working days or calendar days.
No, maternity leave is not sickness absence and should be left out of the absenteeism rate. Pregnancy-related illness is often recorded separately. State in your definition which types of absence you exclude.
There is no single right number; it depends heavily on sector, type of work and age profile. Compare your rate mainly with your own history and between similar departments. A rising trend is a clearer signal than any single percentage.
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.