If you are using MSSQL, please try this query. If the output is something you like, I can adjust it to add the Windows/AIX groupings.
This query will detect the UIM detected robot downtime for the past 30 days.
SELECT robot, 0 as downtime, 0 as offline_count, 100.00 as percentage from CM_NIMBUS_ROBOT WHERE robot NOT IN (select distinct robot from NAS_TRANSACTION_SUMMARY where sid='1.2.2'
AND created BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) AND DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) )
UNION
select robot, SUM(DATEDIFF(MINUTE, created, time)) as downtime_minutes, count(*) as down_instances,
CONVERT(DECIMAL(10,2), (DATEDIFF(MINUTE, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0),DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)) - SUM(DATEDIFF(MINUTE, created, time)))
*100/CONVERT(DECIMAL(10,2), DATEDIFF(MINUTE, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0),DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)))) as percentage
from NAS_TRANSACTION_SUMMARY
where sid='1.2.2' AND created BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) AND DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)
GROUP BY robot order by percentage