From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Daniel Hernández <dhernand(at)scio(dot)cl> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Obtener el más cercano |
Date: | 2008-06-26 12:27:41 |
Message-ID: | 20080626122741.GA3899@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Daniel Hernández escribió:
> Hola, parece que los mails que he enviado no han llegado, no lo he
> visto en los archivos, así que pregunto de nuevo.
>
> Tengo una tabla como esta:
>
> CREATE TABLE t (x double precision primary key, ...);
>
> y quiero obtener el elemento cuyo valor sea más cercano a un valor dado
> x0.
Usa un UNION, por ej.
select * from (
(select * from t where x < 0.4 order by x desc limit 1)
union all
(select * from t where x > 0.4 order by x limit 1)
) qqch
order by abs(x - 0.4);
O sea tomas el mas cercano hacia arriba y hacia abajo, y luego escoges
uno de entre ellos.
Nota: obviamente en este caso no es realmente necesario el UNION ALL
puesto que los conjuntos son disjuntos, pero el plan es ligeramente
mejor.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-06-26 12:45:58 | Re: RV: Interconectar POSTGRE INTERBASE/FIREBIRD |
Previous Message | zariguella | 2008-06-26 09:00:22 | RV: Interconectar POSTGRE INTERBASE/FIREBIRD |