Re: Obtengo un error al tratar de sumar dos sum

From: "Yessica Brinkmann" <yessica(dot)brinkmann(at)gmail(dot)com>
To: "Raul Andres Duque" <raulandresduque(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Obtengo un error al tratar de sumar dos sum
Date: 2006-12-26 18:32:43
Message-ID: a3b0d4880612261032v624e0b95g82c6ed0328fbc30@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas tardes.
Yo pensaba que había solucionado el problema usando la siguiente sentencia:
select SUM(subtable.Valor) as total
FROM
(
SELECT sum(TBL_VENTAS.monto) AS valor
FROM TBL_VENTAS
WHERE TBL_VENTAS.Id_Empresa = 247
UNION
SELECT sum(TBL_EXPORTACIONES.monto) AS Valor
FROM TBL_EXPORTACIONES
WHERE TBL_EXPORTACIONES.Id_Empresa = 247
) subtable
pero me di cuenta ahora recién que estoy obteniendo solamente el valor
del segundo select del UNION, y no el total general.
Agradeceré cualquier comentario al respecto.
Gracias.
Yessica.

El 20/12/06, Raul Andres Duque<raulandresduque(at)hotmail(dot)com> escribió:
> Yessica ya sólo falta el último paso:
>
> Utiliza el UNION como subquery y utiliza un alias para "referenciar" la
> sumatorias obtenidas del subquery. Quedaría algo como:
>
> SELECT SUM(Valor)
> FROM
> (
> SELECT sum(TBL_VENTAS.monto) AS valor
> FROM TBL_VENTAS
> WHERE TBL_VENTAS.Id_Empresa = 231
> UNION
> SELECT sum(TBL_EXPORTACIONES.monto) AS Valor
> FROM TBL_EXPORTACIONES
> WHERE TBL_EXPORTACIONES.Id_Empresa = 231
> )
>
>
> Cualquier duda no dudes en consultarla a la lista.
>
> NOTA: Recuerda copiar tus mensajes a la lista (pueden haber otras personas
> que esten siguiendo tu caso o simplemente están interesados en conocer la
> solución).
>
> Atentamente,
>
> RAUL DUQUE
> Bogotá, Colombia
>
>
>
> ----- Original Message -----
> From: "Yessica Brinkmann" <yessica(dot)brinkmann(at)gmail(dot)com>
> To: "Raúl Andrés Duque Murillo" <raulandresduque(at)hotmail(dot)com>
> Sent: Tuesday, December 19, 2006 3:48 PM
> Subject: Re: [pgsql-es-ayuda] Obtengo un error al tratar de sumar dos sum
>
>
> Buenas tardes.
> Muchas gracias por tu interés.
> Ya probé las dos opciones que me planteaste, con otro ejemplo similar,
> y con ninguna de las dos obtuve el resultado deseado, no sé si tal vez
> estoy planteando mal las cosas.
> a) Hacer un join entre las tablas
> Si hago
> select sum(TBL_VENTAS.monto) from TBL_VENTAS
> WHERE TBL_VENTAS.Id_Empresa=231
> Obtengo el resultado siguiente:
> 500000
>
> y luego con
> select sum(TBL_EXPORTACIONES.monto) from TBL_EXPORTACIONES
> WHERE TBL_EXPORTACIONES.Id_Empresa=231
> obtengo:
> 760000
>
> Al hacer el join:
> select sum(TBL_VENTAS.monto) + sum(TBL_EXPORTACIONES.monto)
> from TBL_VENTAS JOIN TBL_EXPORTACIONES
> ON TBL_VENTAS.Id_Empresa=TBL_EXPORTACIONES.Id_EmpresaWHERE
> TBL_VENTAS.Id_Empresa = 231
> obtengo como resultado
> 5540000
>
> b) Utilizando un UNION
> SELECT sum(TBL_VENTAS.monto)
> FROM TBL_VENTAS
> WHERE TBL_VENTAS.Id_Empresa = 231
> UNION
> SELECT sum(TBL_EXPORTACIONES.monto)
> FROM TBL_EXPORTACIONES
> WHERE TBL_EXPORTACIONES.Id_Empresa = 231
> Obtengo el siguiente resultado:
> 500000
> 760000
> o sea, las dos sumas parciales por separado, y no el total.
> Como ya te dije, no sé si esta es la forma en que estabas pensando
> plantear las cosas.
> Agradeceré cualquier comentario adicional.
> Yessica.
>
>
> El 19/12/06, Raúl Andrés Duque Murillo<raulandresduque(at)hotmail(dot)com>
> escribió:
> > Yessica, estas generando un producto cartesiano entre las dos tablas, como
> > comenta Alvaro, postgresql esta haciendo lo que les estas indicando (que a
> > tu modo de ver es erroneo), debes replantiear tu query, tal vez colocando
> > un
> > join entre las dos tablas o usando un union.
> >
> > Atentamente,
> >
> > RAUL DUQUE
> > Bogotá, Colombia
> >
> > >From: "Yessica Brinkmann" <yessica(dot)brinkmann(at)gmail(dot)com>
> > >To: pgsql-es-ayuda(at)postgresql(dot)org
> > >Subject: [pgsql-es-ayuda] Obtengo un error al tratar de sumar dos sum
> > >Date: Tue, 19 Dec 2006 13:48:16 -0400
> > >
> > >Buenas tardes lista.
> > >Escribo desde Asunción, Paraguay.
> > >Soy nueva usando Postgres y usando sql inclusive.
> > >Tengo el siguiente problema:
> > >Cuando ejecuto el siguiente query obtengo el resultado que
> > >indico a continuación:
> > >select sum(productor_infraestructura.sup_real) from
> > >productor_infraestructura
> > >Resultado del query= 172
> > >
> > >Y cuando ejecuto este otro:
> > >select sum (proyecto.costo) from proyecto
> > >Resultado del query=100000
> > >
> > >Ahora, si ejecuto:
> > >select sum(productor_infraestructura.sup_real) + sum(proyecto.costo) as
> > >total
> > >from productor_infraestructura, proyecto
> > >obtengo como Resultado del query=1.50017e+006
> > >y Debe ser 100172
> > >
> > >Alguien tiene alguna idea de porqué obtengo estos resultados?
> > >Agradeceré cualquier contribución.
> > >Yessica.
> > >
> > >---------------------------(fin del mensaje)---------------------------
> > >TIP 7: no olvides aumentar la configuración del "free space map"
> >
> > _________________________________________________________________
> > MSN Amor: busca tu ½ naranja http://latam.msn.com/amor/
> >
> >
> > ---------------------------(fin del mensaje)---------------------------
> > TIP 4: No hagas 'kill -9' a postmaster
> >
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ronald Correa Macias 2006-12-26 18:33:03 UNSUSCRIBE
Previous Message Alvaro Herrera 2006-12-26 14:30:03 Re: RV: ficheros wals y problema con disco