Re: [problemas con consulta, obtener el maximo y su rut asociado]

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
*****************************************

In response to

Browse pgsql-es-ayuda by date

  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