Re: Ayuda con cosulta

From: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
To: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Cc: Lazaro Garcia <lazaro3487(at)gmail(dot)com>, npolanco(at)cuij(dot)edu(dot)cu, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con cosulta
Date: 2016-10-05 11:00:02
Message-ID: CANm+PCDZP5Rqz8UHMtrbN=jRcW-+2uGMROi3Z=o7wtLt+OtimQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, nunca usé lag() pero no debería ser con partición por el paciente?

El 4 de octubre de 2016, 15:20, Anthony Sotolongo <asotolongo(at)gmail(dot)com>
escribió:

> Hola Polanco, parece que tienes en la mente resolverlo con triggers, lo
> cual es válido y lo que te dice Lazaro es uno de los caminos a resolver la
> sitaución, pero también puedes calcularlo en un SELECT utilizando *funciones
> ventanas* para la variación diaria y para el otro campo una subconsulta,
> si tienes muchos datos, puede que algún indice en consulta te pueda hacer
> un poco mas rápida la consulta.
>
> Mira esta consulta:
>
> SELECT r.*, COALESCE ( peso - lag(peso,1) over ( order by fecha ),0) ,
> COALESCE ( peso- (select peso from registro where consulta='SI' and
> registro.fecha<r.fecha order by fecha desc limit 1 ),0)
> FROM registro r
>
> *registro* es el nombre de tu tabla
>
> ojala des pie con bola, jeje
>
>
> saludos
> On 04/10/16 14:26, Lazaro Garcia wrote:
>
> Me parece que lo que debes es crear un trigger before insert, sobre esa tabla, de forma tal que en la función que lo implemente puedas buscar el ultimo peso del paciente y modificar el registro NEW.incrmento_diario en base al cálculo realizado.
>
> Esta página te puede ser de ayuda en el tema de los triggers. Saludos.
> http://www.postgresql.org.es/node/301
>
>
> -----Mensaje original-----
> De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org <pgsql-es-ayuda-owner(at)postgresql(dot)org>] En nombre de npolanco(at)cuij(dot)edu(dot)cu
> Enviado el: martes, 4 de octubre de 2016 12:55
> Para: pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: [pgsql-es-ayuda] Ayuda con cosulta
> Importancia: Alta
>
> Hola a todos, quería ver si me podrían ayudar con una consulta que llevo rato tratando de hacerla pero no doy pie con bola, no hay modo que logre crearla, si alguno me pudiera ayudar. El problema es el siguiente:
>
> Tengo una tabla con datos como estos:
>
> Paciente Peso Fecha Consulta
> Hisomi 89 24/07/2014 SI
> Hisomi 89.1 25/07/2014
> Hisomi 89 26/07/2014
> Hisomi 89 27/07/2014
> Hisomi 89.2 28/07/2014
> Hisomi 89.15 29/07/2014
> Hisomi 89.18 30/07/2014
> Hisomi 89.21 31/07/2014 SI
> Hisomi 89.24 01/08/2014
> Hisomi 89.27 02/08/2014
> Hisomi 89.3 03/08/2014
> Hisomi 89.33 04/08/2014
> Hisomi 89.36 05/08/2014
> Hisomi 89.39 06/08/2014
> Hisomi 89.42 07/08/2014 SI
> Hisomi 89.45 08/08/2014
> Hisomi 89.48 09/08/2014
> Hisomi 89.51 10/08/2014
> Hisomi 89.54 11/08/2014
> Hisomi 89.57 12/08/2014
>
>
> Donde llevo el registro de un paciente dado de su variacion de peso diario y quisiera agregar 2 columnas mas que almacene al insertar un registro nuevo en una la diferencia de peso de ese con respecto al dia anterior y la otra la diferencia de peso entre ese dia y el dia de la consulta anterior, algo asi como esto.
>
> Paciente Peso Fecha Consulta Incrmento_diario Incremento_Consulta
> Hisomi 89 24/07/2014 SI 0 0
> Hisomi 89.1 25/07/2014 0.1 0.1
> Hisomi 89 26/07/2014 -0.1 0
> Hisomi 89 27/07/2014 0 0
> Hisomi 89.2 28/07/2014 0.2 0.2
> Hisomi 89.15 29/07/2014 -0.05 0.15
> Hisomi 89.18 30/07/2014 0.03 0.18
> Hisomi 89.21 31/07/2014 SI 0.03 0.21
> Hisomi 89.24 01/08/2014 0.03 0.03
> Hisomi 89.27 02/08/2014 0.03 0.06
> Hisomi 89.3 03/08/2014 0.03 0.09
> Hisomi 89.33 04/08/2014 0.03 0.12
> Hisomi 89 05/08/2014 -0.33 -0.21
> Hisomi 89.1 06/08/2014 0.1 -0.11
> Hisomi 89.15 07/08/2014 SI 0.05 -0.06
> Hisomi 89.15 08/08/2014 0 0
> Hisomi 89.24 09/08/2014 0.09 0.09
> Hisomi 89.3 10/08/2014 0.06 0.15
> Hisomi 89.3 11/08/2014 0 0.15
> Hisomi 89.57 12/08/2014 0.27 0.42
>
>
> Los dias de consulta no son cada 7 dias, el intervalo es variado, solo que aquí coincide con frecuencia semanal.
>
>
> Gracias de ante mano. Saludos
>
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org) Para cambiar tu suscripci n:http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripci�n:http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Anthony Sotolongo 2016-10-05 12:19:14 Re: Ayuda con cosulta
Previous Message justifarias 2016-10-04 18:27:28 Migrar de MySQL a Postgres