2010-02-24 18 views
9

Ho la seguente tabella.Query Mysql che utilizza where e group per clausola

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

voglio usare GROUP BY clausola nel mio progetto. Sto ottenendo un errore quando sto usando la query:

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

errore

ERROR 1064 (42000): Hai un errore nella sintassi SQL; controllare il manuale che corrisponde alla versione del server MySQL per la sintassi giusta vicino a 'dove service_type = Stampante' at line 1

+1

Spero che qualcuno stia modificando questo adesso. I miei occhi mi fanno male :( – Codesleuth

risposta

24

La seguente query dovrebbe funzionare.

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

Ricordate, la clausola where passa prima che il gruppo dalla clausola e tutti i termini non aggregate nella parte di selezione dovrà essere presente nella clausola group by.

5

utilizzare la clausola having invece di where

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

saluti.

+1

Risposta sbagliata, 20 secondi con HAVING quando un WHERE ha richiesto 0,0005.Mi provo con una sintassi simile a questo post più volte. –

+0

HAVING funziona anche, ma potrebbe essere più adatto per lavorare con la quantità derivata (qui un esempio forzato) 'SUM (consumer_feedback) AS totale ... HAVING totale> 0' che DOVE non può accedere. – ssteele

Problemi correlati