2010-02-24 8 views
9

J'ai le tableau suivant.Requête MySQL utilisant where et clause group by

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

Je souhaite utiliser la clause GROUP BY dans mon projet. Je reçois une erreur lorsque j'utilise la requête:

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

Erreur

erreur 1064 (42000): Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour le droit d'utiliser la syntaxe près de « où SERVICE_TYPE = Imprimante » à la ligne 1

+1

J'espère que quelqu'un est en train d'éditer ça maintenant. Mes yeux ont mal :( – Codesleuth

Répondre

24

La requête suivante devrait fonctionner.

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

Rappelez-vous, la clause where va devant le groupe par article et tous les termes non agrégées dans la partie de sélection devra être présent dans le groupe par article.

5

Utilisez la clause having au lieu de where

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

Cordialement.

+1

Mauvaise réponse, 20 secondes avec HAVING quand un WHERE a pris 0.0005 J'essaie juste avec une syntaxe similaire à ce post post –

+0

HAVING fonctionne aussi, mais peut être mieux adapté pour travailler avec la quantité dérivée (ici un exemple artificiel) 'SUM (consumer_feedback) AS total ... AYANT total> 0' que WHERE ne peut pas accéder. – ssteele