Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Excluir linhas para ter no máximo x linhas por grupo na tabela Oracle


Assumindo a combinação (person_id, car_id) é único na tabela, você pode fazer algo assim:
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);