Rv: Re: Sentencia SQL para dos registros por grupo

From: HERMES ZAMBRA <hermeszambra(at)yahoo(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Cc: mariowojcik(at)yahoo(dot)com(dot)ar
Subject: Rv: Re: Sentencia SQL para dos registros por grupo
Date: 2007-04-01 16:03:05
Message-ID: 20070401160305.95916.qmail@web63710.mail.re1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- HERMES ZAMBRA <hermeszambra(at)yahoo(dot)com> escribió:

> Fecha: Sat, 31 Mar 2007 22:09:09 -0500 (CDT)
> De: HERMES ZAMBRA <hermeszambra(at)yahoo(dot)com>
> Asunto: Re: [pgsql-es-ayuda] Sentencia SQL para dos
> registros por grupo
> Para: Mario Wojcik <mariowojcik(at)yahoo(dot)com(dot)ar>,
> Juan Martínez <jeugenio(at)umcervantes(dot)cl>
> CC: pgsql-es-ayuda(at)postgresql(dot)org
>
>
> --- Mario Wojcik <mariowojcik(at)yahoo(dot)com(dot)ar>
> escribió:
>
> > Juan Martínez escribió:
> > > Mario Wojcik escribió:
> > >> Hola Muchachos...
> > >> Es posible hacer esto con una sola sentencia
> SQL
> > bien hecha?
> > >> Por ejemplo, si en la base tengo esto...
> > >> # CLIENTE FECHA LLAMADA
> > >> 1 1 01/01 aaaaaaa
> > >> 2 1 02/01 bbbbbbb
> > >> 3 1 03/01 ccccccc
> > >> 4 1 04/01 ddddddd
> > >> 5 2 02/01 bbbbbbb
> > >> 6 3 02/01 fffffff
> > >> 7 3 06/01 jjjjjjj
> > >> 8 3 08/01 eeeeeee
> > >> 9 3 09/01 wwwwwww
> > >> 10 3 09/01 xxxxxxx
> > >>
> > >>
> > >> Yo quiero que la consulta me devuelva las 2
> > primeras de cada uno, es
> > >> decir:
> > >> CLIENTE FECHA LLAMADA
> > >> 1 1 01/01 aaaaaaa
> > >> 2 1 02/01 bbbbbbb
> > >> 5 2 02/01 bbbbbbb
> > >> 6 3 02/01 fffffff
> > >> 7 3 06/01 jjjjjjj
> > >>
> > >> Se podrá?
> Bien Hecha no se, tanto decir no arriesgo, pero que
> estas dos funcionan esta probado, lo unico malo es
> que
> sirven solo para hasta dos registros que era lo que
> se
> pide aqui, si tuvieramos que despejar tres, habria
> que
> buscar otra forma.
>
> Probe varias formas 1
> es esta
>
> select distinct on (cliente)
> cliente,fecha,llamada,ctid from tabla_llamdas
> union all
> select distinct on (cliente)
> cliente,fecha,llamada,ctid from tabla_llamdas
> where ctid not in (select distinct on (cliente) ctid
> from tabla_llamadas)
> order by id_documentos
>
> otra es despejando los maximos
> y otra union que vuelva a despejar los maximos pero
> exluyendo los maximos de la primera, tambien con
> esto
> entre parentesis le agruegue un join a la tabla para
> traer los otros campos de los registros con ctid
> iguales. Es complicadito pero te da los dos ultimos
> registros de cada llamada.
>
> select tabla_llamadas.* from central.tabla_llamadas
> join
> (
> select cliente,max(fecha),max(ctid) as id from
> central.tabla_llamadas
> group by cliente
> union all
> select cliente,max(fecha),max(ctid) as id from
> central.tabla_llamadas
> where ctid not in(select max(ctid) from
> central.tabla_llamadas
> group by cliente)
> group by cliente
> order by cliente) as subcon on id=ctid
>
> En realidad no creo que sean buenas formas pero
> resuelven el caso mientras buscamos una respuesta
> mejor
>
> SALUDA A USTED
> HERMES ZAMBRA
>
>
>
> __________________________________________________
> Correo Yahoo!
> Espacio para todos tus mensajes, antivirus y
> antispam ¡gratis!
> Regístrate ya - http://correo.espanol.yahoo.com/
>

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-04-01 17:02:38 Re: EXECUTE en PL/pgSQL ¿? o 'como me lio'
Previous Message Victor Lopez 2007-04-01 14:29:17 EXECUTE en PL/pgSQL ¿? o 'como me lio'