sql >> Databáze >  >> RDS >> Mysql

Vyberte minimální počet řádků s celkovým součtem větším nebo rovným dané prahové hodnotě

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 

Vnitřní dotaz počítá kumulativní součet a další pole mark , což je rovno one zatímco součet je menší a změní se na nulu, když je větší než 0,9. Protože funguje o krok později, shromažďuje první řádek, kde je součet nad limitem.

Výsledek vnitřního výběru

id   mark   sum
4    1      0.30000001192092896
2    1      0.800000011920929
3    1      1.699999988079071

Nyní ve vnějším dotazu stačí vybrat řádky pomocí mark rovná se 1. A výsledkem je 4,2,3

ukázka na sqlfiddle



  1. Nelze načíst ID posledního vloženého řádku v režimu spánku pomocí Oracle

  2. Jak převést 2d pole z PostgreSQL DB na java 2d pole pomocí JDBI?

  3. PostgreSQL se uneste s prázdným polem

  4. Instalace Orafce.sql 3.0 v systému Windows 7