select id from
(select id, if(not(@sum > 0.9), 1, 0) mark, (@sum:[email protected]+value) as sum
from trade cross join (select @sum:=0) s
where price=2 order by value asc) t
where mark =1
Truy vấn bên trong tính tổng tích lũy và trường cộng mark
, bằng one
trong khi tổng nhỏ hơn và biến thành không khi nó lớn hơn 0,9. Vì nó hoạt động sau một bước, nó tập hợp hàng đầu tiên có tổng vượt quá giới hạn.
Kết quả của lựa chọn bên trong
id mark sum
4 1 0.30000001192092896
2 1 0.800000011920929
3 1 1.699999988079071
Bây giờ trong truy vấn bên ngoài, bạn chỉ cần chọn các hàng có dấu mark
bằng 1. Và kết quả là 4,2,3