2012-03-26 21 views
13

Ho una tabella piena di articoli e prezzi per detti articoli. Mi piacerebbe prendere il SUM dei 3 articoli più costosi.MySQL seleziona SUM dei risultati con un LIMIT

Ho pensato che forse SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3 ma questo non sembra fare il trucco. È possibile? Grazie!

risposta

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

basta usare un sub-select:

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

LIMIT si riflette sul numero di righe restituite dalla query e SUM restituisce solo uno. Sulla base di this thread si potrebbe desiderare di provare:

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

Utilizzare una sottoquery o qualcosa di simile. Solo un'idea, in quanto non ho testato la query effettiva.

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

Risposta giusta, tranne che a quanto pare quando scrivo 'SUM (items.price)' la query non riesce, ma tralasciando il cioè tavolo. 'SUM (prezzo)' la query funziona – PotatoFro

0

Non ho provato questo e l'ho appena scritto nella memoria. Si potrebbe provare qualcosa di simile:

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

Edit: ero lenta