Trova righe duplicate nel database Oracle

Trova righe duplicate nel database Oracle

Quando si lavora con i database, si incontrano spesso istanze in cui è necessario trovare righe duplicate in una determinata tabella del database. Trovare duplicati può consentire di determinare il rapporto di valori identici e tutti i valori nella tabella.

È quindi possibile utilizzare le informazioni raccolte per agire, come la rimozione di valori duplicati o spostarli su una tabella temporanea, ecc.

In questo post, impareremo come possiamo trovare valori duplicati in una tabella Oracle usando le funzioni di Oracle Aggregate o Analytic.

Impostazione della tabella di esempio e dei dati

Impostamo un dati di esempio per scopi di illustrazione per comprendere al meglio come utilizzare le funzioni Oracle per trovare valori duplicati.

Se hai una tabella esistente che desideri utilizzare, puoi saltare questa sezione. Altrimenti, eseguire l'istruzione di seguito per creare una tabella di esempio:

Crea table order_information
(
numero id non nullo,
Cliente Varchar2 (50) non NULL,
DATA ORDING_DATE,
Numero Product_id,
Numero di quantità,
numero di prezzo,
vincolo order_info_pk chiave primaria (ID)
);

Quindi, aggiungi i dati di esempio con valori duplicati come mostrato:

Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (1, 'Beatriz', data '2022-10-10', 4500, 45, 56);
Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (2, 'Ali', data '2022-10-10', 5400, 65, 109);
Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (3, 'Gabriel', data '2022-10-11', 6400, 405, 586);
Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (4, 'Beatriz', data '2022-10-11', 5800, 55, 550);
Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (5, "Beatriz", data "2022-10-12", 4506, 46, 700);
Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (6, 'Gabriel', data '2022-10-11', 9001, 450, 5600);
Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (7, "Beatriz", data "2022-10-10", 4500, 45, 56);
Inserisci in order_information (id, cliente, order_date, product_id, quantità, prezzo)
valori (8, 'Ali', data '2022-10-10', 5400, 65, 109);

Una volta che la tabella e i dati di esempio sono pronti, possiamo imparare a trovare le righe duplicate.

Oracle Trova le righe duplicate - Funzione analitica

In Oracle, possiamo utilizzare la funzione Count () insieme a over e partizione per clausola per determinare il numero di record duplicati in una determinata tabella.

Prendi l'istruzione di esempio mostrata di seguito.

Seleziona gli ordini.*, count (*) over (partizione per cliente, ordine_date) numero_of_occurence
da ordini_information ordini;

La query sopra dovrebbe restituire la riga e il numero di volte che si verifica nella tabella come mostrato:

Per ottenere solo i record che appaiono più di una volta, possiamo usare una clausola dove:

con item_count AS (Seleziona ordini.*, count (*) over (partizione per cliente, ordine_date) numero_of_occurence
da ordini_information ordini)
Selezionare *
da item_count
dove numero_of_occurence> 1;

Produzione:

Oracle Trova valori duplicati - funzione aggregata

Un altro metodo che possiamo usare per trovare record duplicati in una tabella è il gruppo per clausola. Possiamo quindi determinare il numero di volte in cui si verifica un determinato record in ciascun gruppo usando la funzione Count (). Se una riga appare più di una volta, è un duplicato.

Un esempio è come mostrato:

Selezionare *
da order_information
dove (cliente, order_date) in
(Seleziona Cliente, Order_Date da Ordrs_Information Group per cliente, order_date con conteggio (*)> 1)
ordine per cliente, order_date;

Le informazioni risultanti sono come mostrate:

Come possiamo vedere, la query ci consente di ottenere righe duplicate dalla tabella di destinazione.

Conclusione

In questo tutorial, hai scoperto due metodi principali per determinare le righe duplicate da un determinato database.