проблема с предложением sql

#mysql #sql

#mysql #sql

Вопрос:

Вопрос: Извлеките количество моделей, созданных каждой маркой только за 2002 год. Упорядочите результаты по make. Исключить производители, которые производят только менее 5 моделей, используя предложение having.

Что у меня есть:

 select count(model) from vehicle where year="2002" order by make having count(model) > 5
  

Это выдает ошибку для предложения наличия. Кто-нибудь знает?

Комментарии:

1. having хочет сгруппироваться по чему-то

2. «по каждой марке», но у вас нет make в вашем SELECT предложении, и как только вы поместите его туда, оно вам понадобится и в GROUP BY предложении.

3.Синтаксическая ошибка заключается в том, что ORDER BY она должна появиться после HAVING .

4. Небольшой момент… Я заметил, что в вопросе указано исключить те модели, у которых меньше 5 моделей, но код включает только те, у которых больше 5. Как насчет ровно 5?

Ответ №1:

Я думаю, вы можете захотеть:

 select make, count(*)
from vehicle
where year="2002"
group by make
having count(*) >= 5
order by make
  

Позвольте мне рассказать вам об этом. В вашем операторе select вы хотите сделать, а затем подсчитать, сколько записей у вас есть на make, что выражается как count(*) . Вы выбираете из строк в vehicle, где год 2002. Эта часть у вас была правильной. Затем вам нужно использовать оператор group by. Вы ничего не сможете посчитать, если не сгруппируете записи, которые хотите посчитать. Для вас объедините записи с тем же make. Затем вы можете указать, что в каждой группе должно быть не менее 5 записей.

Это важный момент — предложение WHERE должно использоваться для изменения таблицы перед оператором GROUP BY . После того, как вы сгруппируете свою таблицу, вы должны использовать HAVING, но вы не можете использовать HAVING без GROUP BY .

Комментарии:

1. В вопросе указано «по каждой марке», поэтому model , вероятно, не относится к SELECT or GROUP BY .