web-dev-qa-db-fra.com

MySQL sélectionne la somme des résultats avec une limite

J'ai une table pleine d'articles et de prix pour ces articles. Je voudrais saisir la somme des 3 articles les plus chers.

Je pensais peut-être que SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3 mais cela ne semble pas faire l'affaire. Est-ce possible? Merci!

18
PotatoFro
select sum(price) from (select items.price from items order by items.price desc limit 3) as subt;
33
KernelM

LIMIT affecte le nombre de lignes renvoyées par la requête et SUM n'en renvoie qu'une. Basé sur ce fil vous voudrez peut-être essayer:

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

Il suffit d'utiliser une sous-sélection:

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

Utilisez une sous-requête ou quelque chose comme ça. Juste une idée, car je n’ai pas testé la requête.

SELECT SUM(items.price) from (select price FROM items ORDER BY items.price LIMIT 3)
1
johnshen64

Je n'ai pas testé cela et je l'ai juste écrit dans ma mémoire. Vous pouvez essayer quelque chose comme:

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

Edit: J'étais lent

0
Mare