Если вы хотите товар с наибольшим количеством продаж, попробуйте следующий запрос
SELECT product_id, COUNT(quantity) as product_quantity
FROM sales_products
GROUP BY product_id
HAVING COUNT(quantity) >= ALL(
SELECT COUNT(quantity)
FROM sales_products
GROUP BY product_id
)
Как упоминал Дэмиен, вам, вероятно, понадобится сумма quantity
больше, чем количество записей sales_products
за product_id
. Следовательно, в таком случае решение должно быть
SELECT product_id, SUM(quantity) as product_quantity
FROM sales_products
GROUP BY product_id
HAVING SUM(quantity) >= ALL(
SELECT SUM(quantity)
FROM sales_products
GROUP BY product_id
)
РЕДАКТИРОВАТЬ: (OP вопрос: Относительно количества результатов, которые я могу получить, как я могу получить топ-5 из них?)
Это может быть немного сложно, так как MySQL не поддерживает LIMIT
в ALL/IN/ANY
подзапросах. Обходной путь может быть следующим:
SELECT product_id, SUM(quantity) as product_quantity
FROM sales_products
GROUP BY product_id
HAVING SUM(quantity) >= (
SELECT MIN(quantity_sum)
FROM
(
SELECT SUM(quantity) quantity_sum
FROM sales_products
GROUP BY product_id
ORDER BY SUM(quantity) desc
LIMIT 5
) t
)
РЕДАКТИРОВАТЬ 2: , если вас интересует только топ-5, и вы не заботитесь о связях (это означает, что у вас может быть, например, десятка лучших товаров с одинаковым количеством сумм, и вы можете случайным образом выбрать только 5) тогда вы можете использовать это
SELECT product_id, SUM(quantity) as product_quantity
FROM sales_products
GROUP BY product_id
ORDER BY SUM(quantity) desc
LIMIT 5