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