Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2010, 14:51
ssh
 
Fecha de Ingreso: agosto-2009
Mensajes: 85
Antigüedad: 14 años, 7 meses
Puntos: 0
Consulta sobre funciones de agregación y Group By

Hola, hace un tiempo en la empresa tenemos un problema!... Si tenemos esta consulta:

Código SQL:
Ver original
  1. SELECT SUM(campo1), campo2, campo3 FROM tabla1 WHERE campo1 > 10;

Postgres arrojará este error:

column "campo2" must appear in the GROUP BY clause or be used in an aggregate function

Arroja este error pues debo agregar el o los campos que no se están usando con función de agregación (Funciones de agregación: SUM, COUNT, MAX, MIN, AVG) en la cláusula GROUP BY, entonces debería hacer esto:

Código SQL:
Ver original
  1. SELECT SUM(campo1), campo2, campo3 FROM tabla1 WHERE campo1 > 10 GROUP BY campo2;

Si pongo esto ahora me arroja este error:

column "campo3" must appear in the GROUP BY clause or be used in an aggregate function

Así que debo agregar campo3 en el GROUP BY también:

Código SQL:
Ver original
  1. SELECT SUM(campo1), campo2, campo3 FROM tabla1 WHERE campo1 > 10 GROUP BY campo2, campo3;

Sólo así me funciona la consulta, pero la verdad es que no quería agrupar por campo2 y menos por campo3, me entienden? El resultado varía según la cantidad de campos en el GROUP BY.

Existe alguna forma o método en postgres para no caer en este "cachito", la empresa ha gastado mucha plata en aspirinas para nosotros, no entienden que el verdadero problema es el bendito GRUOP BY!

Ayuda por favor.
Gracias