2012-03-26 3 views
13

У меня есть таблица, полная деталей и цен на указанные предметы. Я хотел бы взять SUM из 3 самых дорогих предметов.MySQL select SUM результатов с LIMIT

Я подумал, возможно, SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3, но это не похоже на трюк. Это возможно? Благодаря!

ответ

24
select sum(price) from (select items.price from items order by items.price desc limit 3) as subt; 
0

Просто используйте суб-выбора:

select sum(prices) from (SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3) as prices 
4

LIMIT влияет на количество строк, возвращаемых запросом и SUM возвращает только один. На основе this thread вы можете попробовать:

SELECT sum(price) 
FROM (SELECT price 
     FROM items 
     ORDER BY price DESC 
     LIMIT 3 
) AS subquery; 
0

Используйте подзапрос или что-то подобное. Просто идея, поскольку я не тестировал фактический запрос.

SELECT SUM(items.price) from (select price FROM items ORDER BY items.price LIMIT 3) 
+0

Правильный ответ, за исключением того, что, кажется, когда я пишу 'SUM (items.price)' запрос терпит неудачу, но выходя из таблицы ИЭ. 'SUM (цена)' запрос работает – PotatoFro

0

Я не тестировал это, и я просто написал его в своей памяти. Вы можете попробовать что-то вроде:

SELECT * AS total FROM items ORDER BY price DESC 
SELECT SUM(price) FROM total LIMIT 3; 

Edit: я был медленным

Смежные вопросы