web-dev-qa-db-ja.com

MySQLはLIMITで結果のSUMを選択します

上記の商品の商品と価格をまとめた表があります。値段の高い3つのアイテムの合計を取得したいと思います。

おそらくSELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3だと思っていましたが、それではうまくいかないようです。これは可能ですか?ありがとう!

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

LIMITはクエリによって返される行数に影響し、SUMは1つだけを返します。 this thread に基づいて、試してみてください:

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

副選択を使用するだけです:

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

サブクエリなどを使用します。実際のクエリはテストしていません。

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

私はこれをテストしておらず、記憶に書き込んだだけです。あなたは次のようなことを試すことができます:

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

編集:私は遅かった

0
Mare