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 > > >