From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
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-15 13:46:24 |
Message-ID: | 20060815134624.GB13976@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Milton Galo Patricio escribió:
> 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,
Muy bien pensado ... lamentablemente no es simple resolver este
problema. En SQL (el estandar) esta definido un elemento que llaman
"windowing functions" que _creo_ que te permite hacer esto de manera
sencilla.
En el intertanto no se si hay alguna otra manera inteligente de
tratarlo. Lo que podrias intentar es traer varios valores, mas de uno,
digamos unos cuatro o cinco (mas de los que tu esperas que tengan el
valor maximo); y descartar en la aplicacion (!!) aquellos que no cumplan
el maximo. Si todos ellos cumplen el maximo, entonces repetir la
consulta, aumentando el numero que traes. (Si encuentras que estas
usando a menudo eso de repetir la consulta, aumentas el numero que traes
inicialmente, de manera que una subsiguiente ejecucion no tenga que
hacer esto otra vez). Es posible que puedas jugar con LIMIT/OFFSET y
una clausula ORDER BY que sea no ambigua (es decir, ademas de ordenar
segun el total, debes ordenar segun un campo unico, como el ID o RUT)
Si quieres buscar una solucion inteligente, busca el libro "SQL for
Smarties" de Joe Celko. Estoy casi seguro que ahi explica como hacer
esto correctamente (sin recurrir a windowing functions).
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-08-15 13:51:59 | Re: Foreing key |
Previous Message | listapostgres | 2006-08-15 07:47:21 | datestyle |