26 Stimmen

MySQL select SUM der Ergebnisse mit einem LIMIT

Ich habe eine Tabelle voller Artikel und Preise für diese Artikel. Ich möchte die SUMME der 3 Artikel mit dem höchsten Preis ermitteln.

Ich dachte, vielleicht SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3 aber das scheint nicht zu funktionieren. Ist das möglich? Danke!

47voto

KernelM Punkte 8596
select sum(price) from (select items.price from items order by items.price desc limit 3) as subt;

17voto

ScottJShea Punkte 6923

LIMIT beeinflusst die Anzahl der Zeilen, die von der Abfrage zurückgegeben werden, und SUM gibt nur eine Zeile zurück. Basierend auf dieses Thema sollten Sie vielleicht versuchen:

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

2voto

Dave Halter Punkte 14367

Verwenden Sie einfach eine Unterauswahl:

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

1voto

johnshen64 Punkte 3614

Verwenden Sie eine Unterabfrage oder etwas Ähnliches. 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)

-1voto

Mare Punkte 943

Ich habe das nicht getestet und nur aus dem Gedächtnis geschrieben. Du könntest etwas versuchen wie:

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

Edit: Ich war langsam

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X