2012-03-26 26 views
13

Tengo una tabla llena de artículos y precios para dichos artículos. Me gustaría obtener la SUMA de los 3 artículos de mayor precio.MySQL seleccione SUMA de resultados con un LÍMITE

Pensé que tal vez SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3 pero eso no parece hacer el truco. es posible? ¡Gracias!

Respuesta

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

sólo tiene que utilizar un sub-select:

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

LIMIT afecta al número de filas devueltas por la consulta y devuelve sumar sólo uno. Sobre la base de this thread es posible que desee probar:

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

Utilice una subconsulta o algo por el estilo. Solo una idea, ya que no he probado la consulta real.

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

excepto que parece cuando escribo 'SUM (items.price)' la consulta falla, pero dejando de lado la tabla decir. 'SUM (precio)' la consulta funciona – PotatoFro

0

No he probado esto y acabo de escribirlo en mi memoria. Usted podría intentar algo como:

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

Editar: yo era lenta Respuesta correcta