Je suis un débutant avec une base de données, donc je cherche votre aide avec celle-ci.
J'ai un tableau contenant des données de séries chronologiques.
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
Le tableau stocke des données basées sur des intervalles en ne gardant que la limite supérieure de l'intervalle. Par exemple, la première ligne représente un intervalle de [00:00 - 00:10] avec une valeur de 10, la deuxième ligne représente un intervalle de (00:10 - 00:30] avec une valeur de 5 et la troisième représente un intervalle de (00:30 - 01:00) avec une valeur de 10.
J'ai besoin d'une requête efficace dans Postgres pour agréger des données horaires pour une structure comme celle décrite ci-dessus. Le résultat serait donc quelque chose comme ceci:
2012/01/01 00:00, 2012/01/01 01:00, 25
2012/01/01 01:00, 2012/01/01 02:00, 30
Notez que les données de séries chronologiques sont grandes, donc toute aide à l'indexation serait très appréciée.
Merci, dan
2012/01/01 00:10, 10
, toutes ces valeurs sont-elles dans une seule colonne, ou la virgule est-elle un délimiteur de colonne? En outre, les heures exactes (1h00, 2h00, 3h00, etc.) sont-elles garanties d'être stockées dans le tableau des séries chronologiques, ou peut-il ignorer le: 00 et avoir des entrées telles que2012/01/01 03:50
suivies de2012/01/01 04:10
?2012/01/01 04:00, 2012/01/01 05:00, 0
? ou cette heure devrait-elle simplement être omise du résumé?Réponses:
voir sqlfiddle
Quant à l'index: vous pouvez essayer un index de fonction
date_trunc('hour', t - interval '1 minute')
mais je ne suis pas sûr que postgresql puisse l'utiliser.la source