Como función ventana si lo necesita si, pero cual es la partición lo debe decidir el, puede que hayan mas campos en la tabla!!!

y cuando descubra las potencialidades de las funciones ventanas se ponga creativo, jeje

es solo un ejemplo y está con la partición de la tabla completa para que el lo ajuste

Saludos


On 05/10/16 08:00, Guillermo E. Villanueva wrote:
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 <mailto: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
    <http://www.postgresql.org.es/node/301> -----Mensaje
    original----- De: pgsql-es-ayuda-ow...@postgresql.org
    <mailto:pgsql-es-ayuda-ow...@postgresql.org>
    [mailto:pgsql-es-ayuda-ow...@postgresql.org
    <mailto:pgsql-es-ayuda-ow...@postgresql.org>] En nombre de
    npola...@cuij.edu.cu <mailto:npola...@cuij.edu.cu> Enviado el:
    martes, 4 de octubre de 2016 12:55 Para:
    pgsql-es-ayuda@postgresql.org
    <mailto: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
    <mailto:pgsql-es-ayuda@postgresql.org>) Para cambiar tu suscripci
    n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
    <http://www.postgresql.org/mailpref/pgsql-es-ayuda> - Enviado a
    la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org
    <mailto:pgsql-es-ayuda@postgresql.org>
    )
    Para cambiar tu suscripci�n:
    http://www.postgresql.org/mailpref/pgsql-es-ayuda
    <http://www.postgresql.org/mailpref/pgsql-es-ayuda>

Responder a