2010-02-24 3 views
9

У меня есть следующая таблица.Запрос Mysql с использованием где и группы по предложению

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

Я хочу использовать статью GROUP BY в своем проекте. Я получаю сообщение об ошибке, когда я использую запрос:

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

Ошибка

ERROR 1064 (42000): У вас ошибка в вашем SQL синтаксиса; проверить руководство, которое соответствует Вашей версии сервера MySQL для синтаксиса право использовать вблизи «где service_type = Printer» в строке 1

+1

Я надеюсь, что кто-то редактирует это прямо сейчас. У меня глаза больно :( – Codesleuth

ответ

24

Следующий запрос должен работать.

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

Помните, где положение идет перед группой по пункту и все необобщенные членам выбора части должны присутствовать в группе по п.

5

Используйте предложение having вместо where

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

С уважением.

+1

Плохой ответ, 20 секунд с HAVING, когда WHERE взял 0.0005. Я просто попробую с синтаксисом, похожим на этот пост несколько раз. –

+0

HAVING работает также, но может быть лучше подходит для работы с производным количеством (здесь надуманный пример) 'SUM (consumer_feedback) AS total ... HAVING total> 0' that WHERE не может получить доступ. – ssteele

Смежные вопросы