2010-02-24 27 views
9

Tengo la siguiente tabla.Consulta de Mysql usando where y group por la cláusula

mysql> select * from consumer9; 
+------------+--------------+-------------------+ 
| Service_ID | Service_Type | consumer_feedback | 
+------------+--------------+-------------------+ 
|  100 | Computing |    -1 | 
|   35 | Printer  |     0 | 
|   73 | Computing |    -1 | 
|   50 | Data   |     0 | 
+------------+--------------+-------------------+ 

Quiero usar GROUP BY cláusula en mi proyecto. Recibo un error cuando estoy usando la consulta:

SELECT Service_ID, Service_Type, SUM(consumer_feedback) 
FROM consumer9 
GROUP BY Service_ID 
WHERE Service_Type=Printer; 

error

ERROR 1064 (42000): Usted tiene un error en su sintaxis SQL; compruebe el manual que corresponde a su versión del servidor MySQL para el sintaxis derecho al uso cerca 'donde service_type = Impresora' en la línea 1

+1

Espero que alguien esté editando esto ahora mismo. Me duelen los ojos :( – Codesleuth

Respuesta

24

La siguiente consulta debería funcionar.

select Service_ID, Service_Type, sum(consumer_feedback) 
from consumer9 
where Service_Type=Printer 
group by Service_ID, Service_Type; 

Recuerde, la cláusula where va delante de la cláusula GROUP BY y todos los términos no agregados en la parte de selección tendrá que estar presente en la cláusula group by.

5

utilizar la cláusula having en lugar de where

SELECT Service_ID, Service_Type, SUM(consumer_feedback) 
FROM consumer9 
GROUP BY Service_ID 
HAVING Service_Type='Printer'; 

Saludos.

+1

Mala respuesta, 20 segundos con HAVING cuando WHERE tomó 0.0005. Solo trato con una sintaxis similar en esta publicación varias veces. –

+0

HAVING también funciona, pero puede ser más adecuado para trabajar con la cantidad derivada (aquí un ejemplo artificial) 'SUM (consumer_feedback) AS total ... TIENEN total> 0' que WHERE no puede acceder. – ssteele