sql >> データベース >  >> RDS >> Mysql

合計が指定されたしきい値以上の行の最小数を選択します

    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

    sqlfiddleのデモ



    1. 階層データへのXPathクエリ、祖先と子孫の関係を維持

    2. フォームウィザードを使用してフォームを作成する方法

    3. PDOはリモートmysqlサーバーに接続できません

    4. PHPスクリプト(mysqli)は何かをエコーし​​ませんか?