sql >> Base de Datos >  >> RDS >> Mysql

SQL:cómo seleccionar filas que suman cierto valor

Puede usar una subconsulta correlacionada para obtener el total acumulado y recuperar aquellas filas cuyo total acumulado es int . si es un varchar la comparación arrojaría un resultado incorrecto)

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

Editar:cuando hay valores duplicados en la columna de almacenamiento, debe tenerse en cuenta en la suma acumulada al incluir una condición para el id columna. (en este caso < se ha utilizado la condición, por lo que se selecciona la identificación más pequeña para un valor de almacenamiento duplicado)

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