равные не limit 1 а через RANK() OVER (ORDER BY SUM(price) DESC) AS ranking =1 : SELECT itemId, total_revenue
FROM (
SELECT Purchases.itemId, SUM(price) AS total_revenue,
RANK() OVER (ORDER BY SUM(price) DESC) AS ranking
FROM Purchases
JOIN Items ON Purchases.itemId = Items.itemId
WHERE date > DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY itemId
) AS Subquery
WHERE ranking = 1;
Зависит от поставленной задачи.Если у тебя вопрос стоит о выдаче одного самого,то хватит и top 1,а если задача всех самых,то без ранжирования обойтись можно,но уже сложнее Если это тестовое,то зависит от того,будешь ли ты потом защищать своё решение.Если будешь,то можно написать с top 1 и дополнительно написать,что в условии требуется вывести только один товар,а не все и для всех решение будет другое А если не будешь,то всё сложно:если требуется внимательность к деталям,то однозначно top 1,а иначе можно написать через оконку.Но в обоих случаях надо прокомментировать что есть другое решение и почему оно может быть лучше (писать его не обязательно)
Обсуждают сегодня