Re: Como obtener el ultimo registro de un rango de registros

From: "Ivan Perales M(dot)" <ivan(dot)perales(at)gmail(dot)com>
To: Edwin De La Cruz <edwinspire(at)gmail(dot)com>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Como obtener el ultimo registro de un rango de registros
Date: 2016-04-27 18:10:12
Message-ID: CAHMuS05kBLnLdd6VcumwOttY3uxSnPD4oRM91dTHNugJRVLYfg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alomejor el nuevo lateral join de postgresql te puede ayudar en esto:

http://blog.heapanalytics.com/postgresqls-powerful-new-join-type-lateral/

2016-04-27 13:01 GMT-05:00 Edwin De La Cruz <edwinspire(at)gmail(dot)com>:

> Saludos
>
> El día 27 de abril de 2016, 11:17, Edwin De La Cruz
> <edwinspire(at)gmail(dot)com> escribió:
> >
> > El 27/04/2016 08:59, "Anthony Sotolongo" <asotolongo(at)gmail(dot)com>
> escribió:
> >>
> >> HOla Edwin, una buena opcion es usar WINDOWS FUNCTIONS y una posible
> >> solucion pudiera ser:
> >>
> >>
> >> with resultado as (
> >> select row_number()OVER (PARTITION BY idevettype,idaccount, zu order by
> >> idevent desc ) as num, *,max(dateevent )OVER (PARTITION BY idevettype,
> >> idaccount, zu order by idevent desc ) from ( values (1, 56, 1, 100,
> >> '03/01/16 00:00'::timestamp),
> >> (2, 62, 1, 100, '04/01/16 00:00'::timestamp),
> >> (3, 62, 2, 100, '03/01/16 20:45'::timestamp),
> >> (4, 56, 1, 100, '04/01/16 10:00'::timestamp),
> >> (5, 56, 9, 200, '03/01/16 00:00'::timestamp),
> >> (6, 62, 1, 200, '04/01/16 15:00'::timestamp),
> >> (7, 56, 1, 100, '07/01/16 00:00'::timestamp),
> >> (8, 62, 1, 100, '09/01/16 00:00'::timestamp),
> >> (9, 62, 1, 100, '09/01/16 13:00'::timestamp),
> >> (10, 56, 1, 100, '09/01/16 15:12'::timestamp)
> >>
> >> ) AS tabla (idevent ,idevettype ,zu ,idaccount, dateevent)
> >> )
> >>
> >> select idevent, idevettype, zu, idaccount, dateevent from resultado
> where
> >> num<2
> >>
> >>
>
> Justo una asi fue que vi en una de las tantas paginas que lei pero la
> verdad que no la entendi y el ejemplo era para Sql Server.
> Tengo aun mucho por leer :)
> Gracias.
>
> >> saludos
> >>
> >>
> >> El 27 de abril de 2016, 10:22, Edwin De La Cruz <edwinspire(at)gmail(dot)com>
> >> escribió:
> >>>
> >>> Saludos cordiales.
> >>> Tengo una tabla cuyos campos relevantes son:
> >>> idevent idevettype zu idaccount dateevent
> >>> 1 56 1 100 03/01/16 00:00
> >>> 2 62 1 100 04/01/16 00:00
> >>> 3 62 2 100 03/01/16 20:45
> >>> 4 56 1 100 04/01/16 10:00
> >>> 5 56 9 200 03/01/16 00:00
> >>> 6 62 1 200 04/01/16 15:00
> >>> 7 56 1 100 07/01/16 00:00
> >>> 8 62 1 100 09/01/16 00:00
> >>> 9 62 1 100 09/01/16 13:00
> >>> 10 56 1 100 09/01/16 15:12
> >>>
> >>> Y necesito una consulta que me devuelva algo asi:
> >>>
> >>> idevent idevettype zu idaccount dateevent
> >>> 10 56 1 100 09/01/16 15:12
> >>> 9 62 1 100 09/01/16 13:00
> >>> 6 62 1 200 04/01/16 15:00
> >>> 3 62 2 100 03/01/16 20:45
> >>> 5 56 9 200 03/01/16 00:00
> >>>
> >>>
> >>> Usando la consulta:
> >>> SELECT ideventtype, zu, idaccount, MAX(dateevent) AS de FROM events
> >>> where (idaccount = 100 OR idaccount = 200) GROUP BY ideventtype,
> >>> idaccount, zu;
> >>>
> >>> Me devuelve las filas que esperaría recibir, pero.... el campo que
> >>> necesito en realidad es el idevent, si agrego esa columna a la
> >>> consulta obtengo el error:
> >>>
> >>> ERROR: la columna «events.idevent» debe aparecer en la cláusula GROUP
> >>> BY o ser usada en una función de agregación
> >>> SQL state: 42803
> >>> Character: 8
> >>>
> >>>
> >>> Quiza sea una pregunta de novato pero he leído y leído y en ningún
> >>> caso he conseguida hacer que funcione como espero.
> >>> Encontré una solución a lo que necesito pero era para SQL SERVER con
> >>> unas funciones que no había visto antes, ahora mismo no recuerdo y no
> >>> reencuentro el link para ponerlo aqui.
> >>>
> >>>
> >>> Espero que alguien que se haya visto en este caso o similar me pueda
> >>> orientar un poco.
> >>>
> >>>
> >>> Mis proyectos de software libre en:
> >>> Github - edwinspire
> >>>
> >>> -
> >>> 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
> >>
> >>
> >
> > Gracias a todos por sus sugerencias. Les pruebo y les comentó.
>
> -
> 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
>

--
Lindolfo Iván Perales Mancinas
Solo existen 10 tipos de personas en el mundo, las que saben binario y las
que no.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alberto Cuevas 2016-04-28 14:02:36 Obtener registros
Previous Message Edwin De La Cruz 2016-04-27 18:01:29 Re: Como obtener el ultimo registro de un rango de registros