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 <asotolo...@gmail.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-ow...@postgresql.org 
> [mailto:pgsql-es-ayuda-ow...@postgresql.org 
> <pgsql-es-ayuda-ow...@postgresql.org>] En nombre de npola...@cuij.edu.cu
> Enviado el: martes, 4 de octubre de 2016 12:55
> Para: pgsql-es-ayuda@postgresql.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@postgresql.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@postgresql.org
> )
> Para cambiar tu suscripci�n:http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
>
>

Responder a