Oracle
 sql >> Base de données >  >> RDS >> Oracle

Supprimer des lignes pour avoir un maximum de x lignes par groupe dans la table Oracle

En supposant la combinaison (person_id, car_id) est unique dans le tableau, vous pouvez faire quelque chose comme ceci :

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);