sql >> Database >  >> RDS >> Mysql

Selecteer minimaal aantal rijen met totale som groter dan of gelijk aan een bepaalde drempel

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 

De binnenste query telt de cumulatieve som en het extra veld mark , wat gelijk is aan one terwijl de som kleiner is en nul wordt als deze hoger is dan 0,9. Omdat het een stap later werkt, verzamelt het de eerste rij waar de som boven de limiet ligt.

Het resultaat van de innerlijke selectie

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

Nu hoef je in de buitenste query alleen maar rijen te selecteren met mark gelijk aan 1. En het resulteert in 4,2,3

demo op sqlfiddle



  1. PDOStatement::rowCount resultaat bij gebruik na PDO::commit?

  2. Hoe kunnen we de grootte van de uitvoerparameter definiëren in de opgeslagen procedure?

  3. Primaire sleutel synchroniseren tussen twee tabellen die zijn opgeslagen in twee verschillende databases

  4. Wat is beter, impliciete of expliciete join?