sql >> Base de Datos >  >> RDS >> Oracle

Elimine filas para tener un máximo de x líneas por grupo en la tabla de Oracle

Asumiendo la combinación (person_id, car_id) es único en la tabla, puede hacer algo como esto:

delete from car_assignment 
where (person_id, car_id) 
        in (select person_id, car_id
            from (
              select person_id, 
                     car_id, 
                     row_number() over (partition by person_id order by car_id) as rn
              from car_assignment
            ) t 
            where rn > 2);