@soja

Где ошибка в запросе sql?

делаю задание по учебе. Есть таблица product_model, содержащая следующие столбцы: 65340baa9693a136332341.png Само задание звучит так: Посчитай количество продуктов в каждой категории и вывести id только тех категорий, в которых количество продуктов больше пяти. Это таблица product_model. Результат отсортируй в порядке возрастания количества продуктов. Предполагается использовать оператор HAVING
Запрос:
SELECT "categoryId", COUNT(*) AS product_count FROM product_model GROUP BY "categoryId" HAVING product_count > 5 ORDER BY product_count ASC;

В итоге выдает ошибку: 65340c647ca72711135928.png
  • Вопрос задан
  • 385 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
Предикаты having вычисляются раньше агрегатов в выборке.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Snakecharmer
@Snakecharmer
Широкопрофильный менеджер и аналитик
У вас в ошибке написано, что поле product_count не существует.

Дело в том, что СУБД выполняет команды запроса не в том порядке, в котором они пишутся. SELECT выполняется не раньше, а позже HAVING, и поэтому поля product_count на этапе HAVING еще пока не существует.

SELECT categoryId, COUNT(*) AS product_count
FROM product_model
GROUP BY categoryId
HAVING COUNT(*) > 5
ORDER BY product_count
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы