Encuentre filas duplicadas en Oracle Database

Encuentre filas duplicadas en Oracle Database

Al trabajar con bases de datos, a menudo encuentra instancias en las que necesita encontrar filas duplicadas en una tabla de base de datos dada. Encontrar duplicados puede permitirle determinar la relación de valores idénticos para todos los valores en la tabla.

Luego puede usar la información recopilada para actuar, como eliminar los valores duplicados o moverlos a una tabla temporal, etc.

En esta publicación, aprenderemos cómo podemos encontrar valores duplicados en una tabla de Oracle usando Oracle agregado o funciones analíticas.

Configuración de la tabla de muestra y los datos

Configurar los datos de muestra con fines de ilustración para comprender mejor cómo usar las funciones de Oracle para encontrar valores duplicados.

Si tiene una tabla existente que desea usar, puede omitir esta sección. De lo contrario, ejecute la declaración a continuación para crear una tabla de muestra:

Crear pedidos de tabla_información
(
número de identificación no nulo,
Cliente Varchar2 (50) No NULL,
Fecha de orden de orden,
Product_id Número,
número de cantidad,
número de precio,
Restricción Order_info_pk Clave primaria (ID)
);

A continuación, agregue datos de muestra con valores duplicados como se muestra:

Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (1, 'Beatriz', fecha '2022-10-10', 4500, 45, 56);
Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (2, 'Ali', fecha '2022-10-10', 5400, 65, 109);
Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (3, 'gabriel', fecha '2022-10-11', 6400, 405, 586);
Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (4, 'Beatriz', fecha '2022-10-11', 5800, 55, 550);
Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (5, 'Beatriz', fecha '2022-10-12', 4506, 46, 700);
Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (6, 'gabriel', fecha '2022-10-11', 9001, 450, 5600);
Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (7, 'Beatriz', fecha '2022-10-10', 4500, 45, 56);
Insertar en Orders_Information (ID, Customer, Order_Date, Product_ID, Cantidad, Precio)
valores (8, 'Ali', fecha '2022-10-10', 5400, 65, 109);

Una vez que la tabla y los datos de muestra están listos, podemos aprender a encontrar las filas duplicadas.

Oracle encuentra filas duplicadas - función analítica

En Oracle, podemos usar la función Count () junto con la cláusula Over and Partition by para determinar el número de registros duplicados en una tabla determinada.

Tome la declaración de ejemplo que se muestra a continuación.

Seleccionar pedidos.*, Count (*) Over (Partition by Customer, Order_Date) Number_of_occurence
de pedidos_información órdenes;

La consulta anterior debe devolver la fila y el número de veces que ocurre en la tabla como se muestra:

Para obtener solo los registros que aparecen más de una vez, podemos usar una cláusula Where AS:

con item_count como (seleccionar pedidos.*, Count (*) Over (Partition by Customer, Order_Date) Number_of_occurence
de pedidos_información órdenes)
seleccionar *
de item_count
donde number_of_occurence> 1;

Producción:

Oracle encuentra valores duplicados: función agregada

Otro método que podemos usar para encontrar registros duplicados en una tabla es el grupo por cláusula. Luego podemos determinar el número de veces que ocurre un registro dado en cada grupo utilizando la función Count (). Si una fila aparece más de una vez, es un duplicado.

Un ejemplo es como se muestra:

seleccionar *
de orders_information
donde (cliente, orden_date) en
(Seleccione Cliente, Order_Date de Orders_Information Group por Cliente, Order_Date con Count (*)> 1)
pedido por cliente, orden_date;

La información resultante es como se muestra:

Como podemos ver, la consulta nos permite obtener filas duplicadas de la tabla de destino.

Conclusión

En este tutorial, descubrió dos métodos principales para determinar filas duplicadas de una base de datos dada.