Какие ошибки содержит SQL-запрос?

Задача состоит в том, чтобы посчитать количество продуктов в каждой категории и вывести только ID тех категорий, в которых количество продуктов больше пяти. Также требуется отсортировать результат в порядке возрастания количества продуктов. Предполагается использовать оператор HAVING.

У меня есть таблица `product_model`, содержащая следующие столбцы:

Чтобы решить данную задачу, я использовал следующий запрос:

```sql
SELECT "categoryId", COUNT(*) AS product_count 
FROM product_model 
GROUP BY "categoryId" 
HAVING product_count > 5 
ORDER BY product_count ASC;
```

Однако, данный запрос выдает ошибку.
Изображение к вопросу
Изображение к вопросу
  • 21 октября 2023 г. 17:47
Ответы на вопрос 2
Ошибка в данном SQL-запросе заключается в том, что в разделе HAVING используется псевдоним столбца "product_count", который определен в разделе SELECT. Вместо этого нужно использовать само выражение COUNT(*). 

Измененный запрос будет выглядеть следующим образом:

```sql
SELECT "categoryId", COUNT(*) AS product_count 
FROM product_model 
GROUP BY "categoryId" 
HAVING COUNT(*) > 5 
ORDER BY COUNT(*) ASC;
```
При использовании предикатов having, они выполняются до агрегатных функций в запросе.
Похожие вопросы