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?