Запрос HAVING MAX () не работает должным образом - PullRequest
0 голосов
/ 11 июня 2018

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

Cashier(cashier_id*, cashier_name)
Category(category_id*, category_name)
Product(product_id*, product_name, price, category_id**)
Purchase(product_id**, cashier_id**, amount)

* primary key
** foreign key

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

SELECT x.category,x.amount
    FROM (SELECT category_name as category, SUM(amount) as amount FROM 
          Category c, Product pr, Purchase pu WHERE pr.product_id = 
          pu.product_id and c.category_id = pr.category_id GROUP BY 
          category_name) x
    GROUP BY x.category
    HAVING MAX(x.amount);

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 11 июня 2018

Предположительно, вы хотите что-то вроде этого:

SELECT c.category_name as category, SUM(amount) as amount
FROM Category c JOIN
     Product pr
     ON c.category_id = pr.category_id JOIN
     Purchase pu 
     ON pr.product_id = pu.product_id
GROUP BY category_name
ORDER BY SUM(amount) DESC
LIMIT 1;

Никогда не используйте запятые в предложении FROM. Всегда используйте правильный, явный, стандартный JOIN синтаксис.

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