Skip site navigation (1) Skip section navigation (2)

Re: Obtene?==?iso-8859-1?Q?r el más cercano

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: Obtene?==?iso-8859-1?Q?r el más cercano
Date: 2008-06-26 12:27:41
Message-ID: 20080626122741.GA3899@alvh.no-ip.org (view raw or flat)
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.

In response to

Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2008-06-26 12:45:58
Subject: Re: RV: Interconectar POSTGRE INTERBASE/FIREBIRD
Previous:From: zariguellaDate: 2008-06-26 09:00:22
Subject: RV: Interconectar POSTGRE INTERBASE/FIREBIRD

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group