2009/4/7 Newton Teixeira do Nascimento Júnior <[email protected]>: > > Tenho uma tabela X com os campos data_hora (timestamp without timezone) e > valor (real). > > Essa tabela recebe registros a cada 10 ou 30 segundos. > > Ao fim do dia, esta tabela está com cerca de 6500 registros. > > Quero plotar um gráfico Valor X Tempo, porém não dá com essa quantidade de > registros. > > Gostaria de fazer um select que retornasse a média de valores em um > determinado intervalo, por exemplo: > > o valor médio a cada minuto ou o valor médio a cada 02 minutos, ou o valor > média a cada 05 minutos, etc (Esse intervalo poderia ser um parâmetro). >
Sugestão: Utilize uma tabela auxiliar, que pode ser gerada através da função generate_series(start, stop, step). Ex. : SELECT menor_data_hora + s.a*'1 minute'::interval FROM generate_series(0, minutos(maior_data_hora-menor_data_hora), intervalo_desejado) AS s(a); Faça um INNER JOIN entre a tabela auxiliar e sua tabela utilizando como critério de junção: data_hora BETWEEN aux.inicio_intervalo AND aux.inicio_intervalo+intervalo e fazendo um GROUP BY inicio_intervalo e pegando a média dos valores. Bom, a idéia é essa, agora é botar as mãos na massa. Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
