Mysql
 sql >> Database >  >> RDS >> Mysql

SQL:come selezionare le righe che riassumono un determinato valore

È possibile utilizzare una sottoquery correlata per ottenere il totale parziale e recuperare quelle righe il cui totale parziale è int . se è un varchar il confronto restituirebbe il risultato sbagliato)

select id,user_id,storage
from uploads t
where storage+coalesce((select sum(storage) from uploads 
                        where storage<t.storage),0) < 410000
order by storage

SQL Fiddle

Modifica:quando sono presenti valori duplicati nella colonna di archiviazione, è necessario tenerne conto nella somma corrente includendo una condizione per l'id colonna. (in questo caso < condizione è stata utilizzata, quindi viene prelevato l'ID più piccolo per un valore di archiviazione duplicato)

select id,user_id,storage
from uploads t
where storage+coalesce((select sum(storage) from uploads 
                        where storage<t.storage 
                        or (storage=t.storage and id < t.id)),0) < 410000
order by storage