Re: Ayuda con query de intervalo de tiempo entre registro

From: "Miguel Beltran R(dot)" <yourpadre(at)gmail(dot)com>
To:
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con query de intervalo de tiempo entre registro
Date: 2010-02-16 14:48:55
Message-ID: b623c7e41002160648j3eddec37ie697f6f36fd19e91@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias a todos, por la versión de pg que uso voy a hacerlo como menciona
Silvio

El 15 de febrero de 2010 14:54, Alvaro Herrera
<alvherre(at)alvh(dot)no-ip(dot)org>escribió:

> Miguel Beltran R. escribió:
> > Hola Lista
> >
> > Tengo unos registros con un campo datetime que representan cuando se
> > insertaron
> >
> > ¿qué query me puede ayudar a saber el tiempo promedio entre uno y otro?
> >
> > Ej.
> >
> > valor captura
> > 1 2010-02-15 12:00:01
> > 2 2010-02-15 12:00:03
> > 3 2010-02-15 12:00:08
> >
> > Entre el 1ro y 2do fueron 2 segundos y entre el 2do y 3ro fueron 5
> segundos,
> > sumados son 7 segundos entre 3 registros serian un promedio de 2.33
> segundos
>
> La manera más limpia es con una función ventana. Por ej.
>
> alvherre=# create table miguel (a serial, b timestamp default now());
> NOTICE: CREATE TABLE creará una secuencia implícita «miguel_a_seq» para la
> columna serial «miguel.a»
> CREATE TABLE
> alvherre=# insert into miguel default values;
> INSERT 0 1
> alvherre=# insert into miguel default values;
> INSERT 0 1
> alvherre=# insert into miguel default values;
> INSERT 0 1
> alvherre=# insert into miguel default values;
> INSERT 0 1
> alvherre=# insert into miguel default values;
> INSERT 0 1
> alvherre=# insert into miguel default values;
> INSERT 0 1
> alvherre=# insert into miguel default values;
> INSERT 0 1
> alvherre=# select * from miguel;
> a | b
> ---+----------------------------
> 1 | 2010-02-15 17:45:34.116514
> 2 | 2010-02-15 17:45:36.236193
> 3 | 2010-02-15 17:45:39.316307
> 4 | 2010-02-15 17:45:40.044354
> 5 | 2010-02-15 17:45:43.292354
> 6 | 2010-02-15 17:45:44.644171
> 7 | 2010-02-15 17:45:46.204193
> (7 filas)
>
>
> alvherre=# select *, b - lag(b) over (order by b ROWS BETWEEN UNBOUNDED
> PRECEDING AND current row) from miguel;
> a | b | ?column?
> ---+----------------------------+-----------------
> 1 | 2010-02-15 17:45:34.116514 |
> 2 | 2010-02-15 17:45:36.236193 | 00:00:02.119679
> 3 | 2010-02-15 17:45:39.316307 | 00:00:03.080114
> 4 | 2010-02-15 17:45:40.044354 | 00:00:00.728047
> 5 | 2010-02-15 17:45:43.292354 | 00:00:03.248
> 6 | 2010-02-15 17:45:44.644171 | 00:00:01.351817
> 7 | 2010-02-15 17:45:46.204193 | 00:00:01.560022
> (7 filas)
>
> A partir de ahí puedes hacer como quieras con las diferencias entre
> valores. Para obtener el promedio de todos esos valores; por ejemplo,
>
> alvherre=# select min(a), max(a), avg(dif) from (select a, b, b - lag(b)
> over (order by b ROWS BETWEEN UNBOUNDED PRECEDING AND current row ) as dif
> from miguel) foo;
> min | max | avg
> -----+-----+-----------------
> 1 | 7 | 00:00:02.014613
> (1 fila)
>
>
> --
> Alvaro Herrera Vendo parcela en Valdivia: http://rie.cl/?a=255568
> "Oh, great altar of passive entertainment, bestow upon me thy discordant
> images
> at such speed as to render linear thought impossible" (Calvin a la TV)
>

--
________________________________________
Lo bueno de vivir un dia mas
es saber que nos queda un dia menos de vida

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mariano Reingart 2010-02-16 14:49:16 Re: [pgsql-es-ayuda] problemas con conexión desde python...
Previous Message Luis 2010-02-16 14:09:44 problemas con conexión desde python...