Normalice datos de transacciones desde columnas de tiempo y estado a minutos por valor de estado

Tengo una tabla de cambios en los estados de los usuarios, como:

insert_time     status
1/1/2017 0:00   AVAILABLE
1/1/2017 0:15   BUSY
1/1/2017 0:30   NOT AVAILABLE
1/1/2017 1:30   AVAILABLE
1/1/2017 3:10   BUSY
1/1/2017 5:00   NOT AVAILABLE

Por ejemplo: este usuario estaba disponible entre las 00:00 y las 00:15 y ocupado desde las 00:15 hasta las 00:30 y así sucesivamente.

Para analizar los datos, necesito transformarlos a esta estructura:

day       hour  available minutes   not available minutes   busy minutes
1/1/2017     0                 15                      30             15
1/1/2017     1                 30                      30              0
1/1/2017     2                 60                       0              0
1/1/2017     3                 10                       0             50
1/1/2017     4                  0                       0             60

que incluye datos de horas cuyo estado no ha cambiado.

Creo que no es una simple consulta PIVOT, porque necesito dividir una sola fila en varias columnas, incluidas las horas sin datos.

¿Cómo puedo hacerlo en una consulta Oracle SQL?

Respuestas a la pregunta(1)

Su respuesta a la pregunta