Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

SUM en postgres + datos duplicados

Estas en el tema de SUM en postgres + datos duplicados en el foro de PostgreSQL en Foros del Web. Buenas noches, resulta que hice una consulta en postgres para hallar los códigos de cada a.id, en ocasiones el código se repite 3 a 120 ...
  #1 (permalink)  
Antiguo 14/06/2011, 21:02
 
Fecha de Ingreso: abril-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 0
SUM en postgres + datos duplicados

Buenas noches, resulta que hice una consulta en postgres para hallar los códigos de cada a.id, en ocasiones el código se repite 3 a 120 veces, lo que necesito es sumar por cada código los dep.valor que tiene cada uno por separado, osea el código 0201 tiene 120 registros en la tabla por lo tanto tiene por cada registro un valor en dep.valor, pero al sumarlo por cada registro suma 4 veces dando un valor exagerado, no he podido solucionar esto, he mirado la consulta y esta bien planteada pero el sum siempre suma 4 veces por cada registro del código encontrado, alguien sabe como hacer que no sume 4 veces cada registro o alguna otra forma de sumar los valores encontrados por el mismo código?.

Mil Gracias

PD> anexo la consulta.

------------------------------
codigo | valor | suma |
------------------------------
0201 | 2 | 8 |
------------------------------
0201 | 6 | 24 |
------------------------------
total por ese codigo ====> 32 cuando deberia ser ====> 8 el total de la suma
SELECT
a.id,
x1.nombre,
dep.valor,
SUM(dep.valor) as sumvalor
FROM
dep

inner join z on dep.aid = z.aid
inner join compra on compra.compraid = z.aid
inner join a on a.id = z.aid
inner join ax x1 on x1.xid = a.xid
left join ax x2 on x2.xid = a.xcid

WHERE
dep.num = (SELECT mesesdiferencia(compra.fecha, '2011-05-31'))
AND
z.zid NOT IN
(
SELECT
zid
FROM
mov
WHERE
mov.causamov = 'ZD'

AND fecha = '2011-05-31'
)

GROUP BY
a.id,
x1.nombre,
dep.valor

ORDER BY
aux1.auxiliarid
  #2 (permalink)  
Antiguo 15/06/2011, 06:47
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: SUM en postgres + datos duplicados

Eso es porque estas sumando ANTES de hacer el GROUP BY entonces te suma lo de todos los registros y por lo que veo tu quieres sumar unicamente lo que aparezca, esto es después de agrupar.
  #3 (permalink)  
Antiguo 15/06/2011, 11:14
 
Fecha de Ingreso: abril-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: SUM en postgres + datos duplicados

Hola Heimish2000 que pena contigo pero no entiendo lo que dices como que sumar después de hacer el group by, si me puedes dar un ejemplo por favor porque el group by va a lo ultimo de toda la sentencia o eso tenia entendido.

Muchas gracias.
  #4 (permalink)  
Antiguo 20/06/2011, 03:28
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: SUM en postgres + datos duplicados

Algo así

Código MySQL:
Ver original
  1. SELECT a.id, x1.nombre, SUM(dep.valor) FROM (
  2. a.id,
  3. x1.nombre, 
  4. dep.valor,
  5. aux1.auxiliarid
  6. dep
  7.  
  8. inner join z on dep.aid = z.aid
  9. inner join compra on compra.compraid = z.aid
  10. inner join a on a.id = z.aid
  11. inner join ax x1 on x1.xid = a.xid
  12. left join ax x2 on x2.xid = a.xcid
  13.  
  14. dep.num = (SELECT mesesdiferencia(compra.fecha, '2011-05-31'))
  15. z.zid NOT IN
  16. (
  17. zid
  18. mov
  19. mov.causamov = 'ZD'
  20.  
  21. AND fecha = '2011-05-31'
  22. )  
  23.  
  24. a.id,
  25. x1.nombre, 
  26. dep.valor
  27. )
  28. aux1.auxiliarid

Etiquetas: duplicados, postgres, sum
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:42.