EnableYourData.com

KPI · Projects and time

Cycle time: formula and example.

Cycle time is the time between starting work on a task and finishing it. You calculate it per completed task and look at the average, the median or the 85th percentile. Cycle time shows how quickly work flows through the team, regardless of how long it sat in the backlog first.

Cycle time formula

Date completed − date started, per task; then the average or median across completed tasks

Worked example

Acme Groothandel's IT team completed 40 tasks in September 2026, with a total cycle time of 220 days. The average cycle time is 220 ÷ 40 = 5.5 days; the median was 4 days.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A shorter, more stable cycle time means work is delivered faster and more predictably. An average well above the median points to a few tasks that get stuck; find out what they are waiting for. The 85th percentile is useful for commitments: 85% of tasks are finished within that time.

Pitfalls with cycle time

  • Confusing cycle time with lead time: lead time counts from when the task was created, cycle time from when work started.
  • Not handling reopened or moved-back tasks properly, so the start time is wrong.
  • Showing only the average; a few outliers distort the picture.

SQL & DAX

Calculating cycle time 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', completed_at)::date AS month,
       COUNT(*) AS completed_tasks,
       ROUND(AVG(EXTRACT(EPOCH FROM completed_at - started_at) / 86400)::numeric, 1) AS avg_cycle_days,
       ROUND((PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM completed_at - started_at) / 86400))::numeric, 1) AS median_cycle_days,
       ROUND((PERCENTILE_CONT(0.85) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM completed_at - started_at) / 86400))::numeric, 1) AS p85_cycle_days
FROM tasks
WHERE started_at IS NOT NULL AND completed_at IS NOT NULL
GROUP BY 1
ORDER BY 1;
DAX · Power BI
Completed Tasks = CALCULATE ( COUNTROWS ( Tasks ), NOT ISBLANK ( Tasks[CompletedAt] ), NOT ISBLANK ( Tasks[StartedAt] ) )
Avg Cycle Time (days) =
DIVIDE (
    SUMX ( FILTER ( Tasks, NOT ISBLANK ( Tasks[CompletedAt] ) && NOT ISBLANK ( Tasks[StartedAt] ) ), DATEDIFF ( Tasks[StartedAt], Tasks[CompletedAt], HOUR ) / 24 ),
    [Completed Tasks]
)

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for cycle time 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

What is the difference between cycle time and lead time?

Lead time runs from when a task is created or requested until it is completed. Cycle time only runs from when someone actually starts on it. The difference is the waiting time in the backlog.

How do you calculate cycle time?

For each completed task, subtract the start date from the completion date. Then take the average or median across all tasks in the period. You need a tool that records when a task moves to in progress.

How can you reduce cycle time?

Limit the number of tasks in progress at once, make tasks smaller and remove waiting time, such as waiting for review or testing. Less work in parallel means each task finishes sooner. Track the median and 85th percentile to see the effect.

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.