Cada vez que comience a pensar que desea un GRUPO POR localizado, debe comenzar a pensar en funciones de ventana en su lugar.
Creo que buscas algo como esto:
select unit_id, time, diag
from (
select unit_id, time, diag,
rank() over (partition by unit_id order by time desc) as rank
from diagnostics.unit_diag_history
) as dt
where rank = 1
Es posible que desee agregar algo a ORDER BY para romper también los empates de manera consistente, pero eso no alteraría la técnica general.