Encontre linhas duplicadas no banco de dados Oracle

Encontre linhas duplicadas no banco de dados Oracle

Ao trabalhar com bancos de dados, você geralmente encontra instâncias em que precisa encontrar linhas duplicadas em uma determinada tabela de banco de dados. Encontrar duplicatas pode permitir que você determine a proporção de valores idênticos para todos os valores na tabela.

Você pode usar as informações coletadas para agir, como remover valores duplicados ou movê -los para uma tabela temporária, etc.

Nesta postagem, aprenderemos como podemos encontrar valores duplicados em uma tabela Oracle usando funções agregadas ou analíticas do Oracle.

Configurando a tabela de amostra e dados

Vamos configurar um exemplo de dados para fins de ilustração para entender melhor como usar as funções do Oracle para encontrar valores duplicados.

Se você tem uma tabela existente que deseja usar, você pode pular esta seção. Caso contrário, execute a declaração abaixo para criar uma tabela de amostra:

Crie tabela ordens_information
(
Número de identificação não nulo,
cliente varchar2 (50) não nulo,
data de ordem_date,
Número de Product_id,
número de quantidade,
número de preço,
restrição Order_info_pk Primária Chave (ID)
);

Em seguida, adicione dados de amostra com valores duplicados como mostrado:

Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (1, 'beatriz', data '2022-10-10', 4500, 45, 56);
Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (2, 'Ali', data '2022-10-10', 5400, 65, 109);
Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (3, 'Gabriel', Data '2022-10-11', 6400, 405, 586);
Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (4, 'beatriz', data '2022-10-11', 5800, 55, 550);
Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (5, 'beatriz', data '2022-10-12', 4506, 46, 700);
Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (6, 'Gabriel', Data '2022-10-11', 9001, 450, 5600);
Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (7, 'beatriz', data '2022-10-10', 4500, 45, 56);
Inserir em ordens_information (id, cliente, order_date, product_id, quantidade, preço)
valores (8, 'Ali', data '2022-10-10', 5400, 65, 109);

Depois que os dados da tabela e da amostra estiverem prontos, podemos aprender a encontrar as linhas duplicadas.

Oracle Find Duplicate lines - Função analítica

No Oracle, podemos usar a função count () em conjunto com a cláusula Over e Partition by para determinar o número de registros duplicados em uma determinada tabela.

Veja a declaração de exemplo mostrada abaixo.

selecione pedidos.*, contagem (*) sobre (partição por cliente, order_date) number_of_occurence
de ordens_information ordens;

A consulta acima deve retornar a linha e o número de vezes que ocorre na tabela, como mostrado:

Para obter apenas os registros que aparecem mais de uma vez, podemos usar uma cláusula onde:

com item_count como (selecione pedidos.*, contagem (*) sobre (partição por cliente, order_date) number_of_occurence
de ordens_information ordens)
Selecione *
de item_count
onde número_of_occurence> 1;

Saída:

Oracle encontre valores duplicados - função agregada

Outro método que podemos usar para encontrar registros duplicados em uma tabela é o grupo por cláusula. Podemos então determinar o número de vezes que um determinado registro ocorre em cada grupo usando a função count (). Se uma linha aparecer mais de uma vez, é um duplicado.

Um exemplo é como mostrado:

Selecione *
de ordens_information
onde (cliente, order_date) em
(Selecione Customer, order_date no Grupo de Ordens_information pelo Cliente, order_date tendo contagem (*)> 1)
pedido pelo cliente, order_date;

As informações resultantes são como mostrado:

Como podemos ver, a consulta nos permite obter linhas duplicadas da tabela de destino.

Conclusão

Neste tutorial, você descobriu dois métodos principais para determinar linhas duplicadas de um determinado banco de dados.