Dúvida em SQL

5 respostas
F

Pessoal,

Tenho uma tabela que possui a alocação de recursos tendo uma data inicial e uma data final de cada aloação.

Preciso montar uma query que me contenha minuto a minuto a qtde de recursos alocados.

Isso é possível fazer em um select?

5 Respostas

boaglio

Depende… qual a descrição completa das colunas dessa tabela?

F

tabela recurso_ocupacao:
id_recurso: int
data_inicial: timestamp
data_final: timestamp

Exemplo:

id_recurso | data_inicial     | data_final       |
1          | 2006-08-30 08:00 | 2006-08-30 08:02 |
2          | 2006-08-30 08:00 | 2006-08-30 08:05 |
3          | 2006-08-30 08:01 | 2006-08-30 08:03 |

O resultado deveria ser assim:

2006-08-30 08:00 | 2
2006-08-30 08:01 | 3
2006-08-30 08:02 | 3
2006-08-30 08:03 | 2
2006-08-30 08:04 | 1
2006-08-30 08:05 | 1
boaglio

Já tentou algo assim?

SELECT count(r1.id_recurso), r1.data_inicial
FROM recurso_ocupacao r1, recurso_ocupacao r2,
WHERE r1.data_inicial between r2.data_inicial  and r2.data_final
GROUP BY r1.data_inicial
F
count | data_inicial
4       | 2006-08-30 08:00:00
3       | 2006-08-30 08:01:00
F

Boaglio,

O problema é que eu vejo é que eu teria que gerar antes do group by uma linha para cada minuto ocupado, exemplo, para o registro 1 deveria ter no resultset tres linhas, com os horários a cada minuto…

Criado 30 de agosto de 2006
Ultima resposta 30 de ago. de 2006
Respostas 5
Participantes 2