Em 28 de março de 2010 11:16, Saulo Venâncio
<[email protected]> escreveu:
> Olá amigos,
> Gostaria de uma ajudinha, se fosse possível.
> Tenho uma tabela assim:, com muitos dados.
>     data    |   hora   |         temperaturaambiente
> ------------+----------+---------------------
>  2002-01-01 | 00:30:00 | 23.80
>  2002-01-02 | 16:30:00 | 31.80
> o que preciso fazer é um select que pegue a média dos dados de um
> determinado periodo de tempo, por exemplo,
> quero a média da termperaturaambiente  do intervalo de tempo entre 01 de
> dezembro a 11 de janeiro  de cada pedaço de horário (00:30, 01:30, etc) de
> todos os anos que tenho banco de dados.

Daria para você tentar explicar melhor o que quer dizer com essa
frase? Se possível com um exemplo.


> olha so o que tentei, mas nao deu:
> estacoesonline=# select data,hora,avg(temperaturaambiente)  from medidas
> where (
> hora > '00:01' and hora < '23:59')  and  ((data between '2001-12-30' and
> '2002-0
> 1-02' ) or (data between '2002-12-30' and '2002-01-02')) and id_ponto=228
> group
> by data, hora ;

Como no parágrafo anterior você fala "intervalo de tempo entre 01 de
dezembro a 11 de janeiro" não deveria ser:
BETWEEN '2001-12-01'::date AND '2002-01-11'::date ?

Ou, quem sabe:
extract(year from data) BETWEEN 2001 AND 2002 AND
(to_char(data,'MMDD') BETWEEN '1201' AND to_char(data,'MMDD') BETWEEN
'0111')
ou algo parecido.

Quando você fala "hora" você quer dizer um determinado instante ou um
intervalo (por ex. entre 01:00:00 e 01:59:59)?


> não dá certo pq ele agrupa por data individual e unica, e acaba fazendo da
> temperatura do proprio dia.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a