2012-03-26 35 views
13

Tôi có một bảng đầy đủ các mặt hàng và giá cho các mặt hàng đã nói. Tôi muốn lấy SUM của 3 mặt hàng có giá cao nhất.MySQL chọn SUM kết quả có LIMIT

Tôi nghĩ có lẽ SELECT SUM(items.price) FROM items ORDER BY items.price LIMIT 3 nhưng điều đó dường như không thực hiện thủ thuật. Điều này có thể không? Cảm ơn!

Trả lời

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

Chỉ cần sử dụng một phụ chọn:

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

LIMIT ảnh hưởng đến số hàng trả lại do các truy vấn và SUM chỉ trả lại một. Dựa trên this thread bạn có thể muốn thử:

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

Sử dụng truy vấn con hoặc điều gì đó tương tự. Chỉ là một ý tưởng, vì tôi chưa thử nghiệm truy vấn thực tế.

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

câu trả lời phải ngoại trừ việc nó dường như khi tôi viết 'SUM (items.price) 'truy vấn thất bại, nhưng bỏ đi tức là bảng. 'SUM (giá)' truy vấn hoạt động – PotatoFro

0

Tôi chưa thử nghiệm điều này và tôi vừa ghi nó vào bộ nhớ của mình. Bạn có thể thử một cái gì đó như:

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

Chỉnh sửa: Tôi đã chậm

Các vấn đề liên quan