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
内部クエリは、累積合計と追加フィールドmark
をカウントします 、これはone
に相当します 一方、合計は少なくなり、0.9を超えるとゼロになります。 1ステップ後に機能するため、合計が制限を超えている最初の行を収集します。
内部選択の結果
id mark sum
4 1 0.30000001192092896
2 1 0.800000011920929
3 1 1.699999988079071
次に、外部クエリで、mark
のある行を選択する必要があります。 等しい1。結果は4,2,3