Normalizar dados de transações de colunas de hora e status para minutos por valor de status

Eu tenho uma tabela de alterações nos status do usuário, 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 exemplo: este usuário estava disponível entre 00:00 e 00:15 e ocupado de 00:15 a 00:30 e assim por diante.

Para analisar os dados, preciso transformá-los nessa estrutura:

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 inclui dados de horas em que o status não foi alterado.

Acho que não é uma consulta PIVOT simples, porque preciso dividir uma única linha em várias colunas, incluindo horas sem dados.

Como posso fazer isso em uma consulta Oracle SQL?

questionAnswers(1)

yourAnswerToTheQuestion