2012-03-26 18 views
13

Ich habe eine Tabelle voller Artikel und Preise für diese Artikel. Ich würde gerne die SUMME der 3 teuersten Artikel nehmen.MySQL wählen SUMME der Ergebnisse mit einem LIMIT

Ich dachte vielleicht SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3, aber das scheint nicht den Trick zu tun. Ist das möglich? Vielen Dank!

Antwort

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

Verwenden Sie einfach ein Sub-select:

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

LIMIT wirkt sich auf die Anzahl der Zeilen von der Abfrage zurückgegeben und SUM gibt nur einen. Basierend auf this thread Sie könnten versuchen wollen:

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

Verwenden Sie eine Unterabfrage oder so ähnlich. Nur eine Idee, da ich die eigentliche Abfrage nicht getestet habe.

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

Richtige Antwort, außer dass es scheint, als ich 'SUM (items.price) schreiben' die Abfrage schlägt fehl, aber die Tabelle dh Weglassen. 'SUM (Preis)' die Abfrage funktioniert – PotatoFro

0

Ich habe dies nicht getestet und ich habe es nur auf mein Gedächtnis geschrieben.

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

Edit:: Sie könnte so etwas wie versuche ich war langsam