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

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Sumar columnas calculadas


  • From: Arturo <arturomunive(at)gmail(dot)com>
  • To: Calabaza <calalinux(at)gmail(dot)com>
  • Cc: pgsql-es-ayuda(at)postgresql(dot)org
  • Subject: Re: Sumar columnas calculadas
  • Date: Wed, 30 Apr 2008 13:13:10 -0500
  • Message-id: <4818B6B6(dot)8000402(at)gmail(dot)com>



Calabaza escribió:
2008/4/29 Arturo <arturomunive(at)gmail(dot)com>:

 SELECT
 campo 1,
 campo 2,
 funcion1(campo3),
 funcion2(campo4),
 (funcion1(campo3) * funcion 2(campo4))
 FROM
...

 donde las funciones pueden ser calculo pesado

 Entonces yo creo que al usar asi las funciones cada una se ejecuta dos
veces
 Mi pregunta es, existe algo como:

 SELECT
 campo 1 as "R1",
 campo 2 as "R2",
 funcion1(campo3) as "R3",
 funcion2(campo4) as "R4",
 ("R3" * "R4") as "R5",
 FROM
 ...

 Obviamente asi no funciona (si no no lo preguntaría), pero hay alguna forma
de hacer eso????

Podrias hacerlo con subconsultas, o vistas...

Veamos:
Select
x.*,
(x.R3 * x.R4) as R5
from
(
SELECT
campo 1 as "R1",
campo 2 as "R2",
funcion1(campo3) as "R3",
funcion2(campo4) as "R4"
from ...
) as x

 Igual mientras tanto, sigo buscando por internet, si encuentro algo les
aviso, si lo encuentran ustedes igual :)

La subconsulta la puedes enviar a una vista y luego el otro select
sale más facil... como mejor te parezca..
puedes darte una vuelta por:

http://www.postgresql.org/docs/7.4/static/queries-table-expressions.html

Ah! ojo que el link es para la version que yo uso, tu deberías buscar
para la version que tú utilizas...

Saludos!
Me parece razonalble tu solucion la probé funciona, pero aun no la he puesto a pruba contra un gran numero de datos, ni la pase por explain
de todas formas lo hare y enviare los resultados



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group