Soy un novato con base de datos, así que estoy buscando su ayuda con este.
Tengo una tabla que contiene datos de series de tiempo.
2012/01/01 00:10, 10
2012/01/01 00:30, 5
2012/01/01 01:00, 10
2012/01/01 01:40, 10
2012/01/01 02:00, 20
La tabla almacena datos basados en intervalos manteniendo solo el límite superior del intervalo. Por ejemplo, la primera fila representa un intervalo de [00:00 - 00:10] con un valor de 10, la segunda fila representa un intervalo de (00:10 - 00:30] con un valor de 5 y la tercera representa un intervalo de (00:30 - 01:00) con un valor de 10.
Necesito una consulta eficiente en Postgres para agregar datos por hora para una estructura como la descrita anteriormente. Entonces el resultado sería algo como esto:
2012/01/01 00:00, 2012/01/01 01:00, 25
2012/01/01 01:00, 2012/01/01 02:00, 30
Tenga en cuenta que los datos de la serie temporal son grandes, por lo que cualquier ayuda para indexar esto sería muy apreciada.
Gracias dan
2012/01/01 00:10, 10
, ¿están todos esos valores en una sola columna, o es la coma un delimitador de columna? Además, ¿se garantiza que las horas exactas (1:00, 2:00, 3:00, etc.) se almacenan en la tabla de series de tiempo, o podría saltarse el: 00 y tener entradas como2012/01/01 03:50
seguidas por2012/01/01 04:10
?2012/01/01 04:00, 2012/01/01 05:00, 0
? ¿o debería omitirse esa hora del resumen?Respuestas:
ver sqlfiddle
En cuanto al índice: podría probar un índice de función
date_trunc('hour', t - interval '1 minute')
pero no estoy seguro de que postgresql pueda usarlo.fuente