Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/03/2009, 09:30
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: El group by no me funciona

Fido Dido

Ya te entiendo. Esto pasa por que todos los campos que quieres mostrar, los tienes en la capa superior de la consulta. La forma de corregir esto, es generar tablas para cada conteo e indexarla a la consulta.

Para que me entiendas mejor te pongo un ejemplo:

Código sql:
Ver original
  1. pruebas=# CREATE TABLE prueba(id INTEGER, nombre text, puntos INTEGER);
  2. CREATE TABLE
  3. pruebas=# INSERT INTO prueba VALUES(1,'daniel',4);
  4. INSERT 0 1
  5. pruebas=# INSERT INTO prueba VALUES(2,'daniela',8);
  6. INSERT 0 1
  7. pruebas=# INSERT INTO prueba VALUES(3,'danielito',8);
  8. INSERT 0 1
  9. pruebas=# INSERT INTO prueba VALUES(4,'danielita',12);
  10. INSERT 0 1
  11.  
  12. //Este sería tu caso
  13. pruebas=# SELECT id, (CASE WHEN puntos=12 THEN COUNT(prueba.*) ELSE 0 END) AS conteo FROM prueba GROUP BY id, puntos;
  14.  id | conteo
  15. ----+--------
  16.   1 |      0
  17.   2 |      0
  18.   3 |      0
  19.   4 |      1
  20. (4 filas)
  21.  
  22. //Esta seria la solucion al problema.
  23. pruebas=# SELECT prueba.id, t1.conteo12 FROM prueba JOIN (SELECT id,COUNT(*) AS conteo12 FROM prueba WHERE puntos=12 GROUP BY id) AS t1 ON prueba.id = t1.id;
  24.  id | conteo12
  25. ----+---------
  26.   4 |       1
  27. (2 filas)

Tus tablas estan un poco confusas, ojala con esto te ubiques y logres tu salida.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 27/03/2009 a las 10:36