From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | Milton Galo Patricio <minoztro(at)gmail(dot)com> |
Cc: | Jaime Casanova <systemguards(at)gmail(dot)com>, Postgres Español <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [problemas con consulta, obtener el maximo y su rut asociado] |
Date: | 2006-08-16 10:52:04 |
Message-ID: | 44E2F8D4.4070107@soft-com.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Milton Galo Patricio escribió:
>
>
> 2006/8/14, Jaime Casanova <systemguards(at)gmail(dot)com
> <mailto:systemguards(at)gmail(dot)com>>:
>
> On 8/14/06, Milton Galo Patricio <minoztro(at)gmail(dot)com
> <mailto:minoztro(at)gmail(dot)com>> wrote:
> > estimados:
> >
> > saben necesito saber que usuario es el que ha publicado más
> noticias de
> > trabajo... la consulta que construi es la siguiente:
> >
> > select max(veces) from (SELECT count(*) AS veces, trabajo.rut
> > FROM exalumno, trabajo
> > WHERE exalumno.rut::text = trabajo.rut::text
> > GROUP BY trabajo.rut) as auxiliar
> >
> > el primer select cuenta las veces que han publicado los exalumnos
> y los
> > agrupa por el rut..hasta ahi todo bien...peero despues quiere
> rotorna al
> > exalumno que más ha publicado, lo que si puedo retornar es las
> veces que ha
> > publicado pero no puedo retornar su rut...he buscado en la
> documentacion y
> > en google y no encontre alguna solución..me podrían ayudar a
> solucionar este
> > problema por favor.
> >
>
> la solucion simple:
> select * from (SELECT count(*) AS veces, trabajo.rut
> FROM exalumno, trabajo
> WHERE exalumno.rut::text =
> trabajo.rut::text
> GROUP BY trabajo.rut) as
> auxiliar
> order by veces desc limit 1;
>
>
>
> ok, buena solución...
>
> despues de un momento de felicidad me di cuenta de algo...que pasa si
> tengo dos personas que han publicado la misma cantidad de noticias y
> justamente son los que más han publicado??, espero algun comentario,
> atentamente,
>
> --
Algo asi te deberia funcionar:
select
count(*) as veces,
trabajo.rut
from trabajo
groyp by
trabajo.rut
having
count(*) = (select count(*) as maximo from trabajo groyp by trabajo.rut order by maximo desc limit 1);
El having tambien puede ser:
having
count(*) = (select max(total) from (select count(*) as total from trabajo group by trabajo.rut) as a);
no se cual de las dos tendrá mejor rendimiento.
Suerte.
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
From | Date | Subject | |
---|---|---|---|
Next Message | Edwin Quijada | 2006-08-16 16:47:01 | Re: [OFF]Revista Linux EMpresarial |
Previous Message | Rubén da Silva | 2006-08-16 10:52:01 | Retornar varios ROWS con plpython |