Ваш запрос не работает, потому что вы пытаетесь использовать агрегатную функцию sum(buy_book.amount) внутри другой агрегатной функции min(). Это недопустимо в SQL.
Вместо этого, вы можете выполнить два запроса: один для получения минимального значения, и другой для получения жанров с этим минимальным значением. Вот пример:
WITH total AS (
SELECT name_genre, SUM(buy_book.amount) as Количество
FROM genre
INNER JOIN book USING(genre_id)
INNER JOIN buy_book USING(book_id)
GROUP BY name_genre
),
min_total AS (
SELECT MIN(Количество) as min_amount
FROM total
)
SELECT name_genre, Количество
FROM total
JOIN min_total ON total.Количество = min_total.min_amount;
select name_genre,sum(buy_book.amount) as Количество
from genre
inner join book using(genre_id)
inner join buy_book using(book_id)
group by name_genre
having sum(buy_book.amount)<=min(sum(buy_book.amount))
Условие задачи такое:
Вывести жанр(ы), в котором было заказано меньше всего экземпляров книг, указать это количество. Учитывать только жанры, в которых была заказана хотя бы одна книга.
При реализации в основном запросе не используйте LIMIT, поскольку жанров с минимальным количеством заказанных книг может быть несколько.
Почему нельзя в having выполнить такую фильтрацию?