Gestire valori duplicati in SQL può essere un'attività ingombrante. Ma non temere, questa guida è qui per alleviare il tuo fardello.

I dati sono disponibili in tutte le forme e forme, ma i record duplicati sono una parte importante di ogni formato di dati. Che si tratti di dati basati sul Web o semplicemente di navigare attraverso un camion carico di dati di vendita, la tua analisi verrà distorta se hai valori duplicati.

Usi SQL per elaborare i tuoi numeri ed eseguire lunghe query sui tuoi stack di dati? Se sì, allora questa guida sulla gestione dei duplicati SQL sarà un vero piacere per te.

Ecco alcuni modi diversi che puoi utilizzare per gestire i duplicati utilizzando SQL.

1. Conteggio dei duplicati utilizzando Raggruppa per funzione

SQL è un linguaggio di programmazione poliedrico che offre varie funzioni per semplificare i calcoli. Se hai molta esperienza con le funzioni di aggregazione in SQL, potresti già avere familiarità con il raggruppa per funzione e per cosa può essere utilizzato.

instagram viewer

IL raggruppa per la funzione è una delle la maggior parte dei comandi SQL di base, che è l'ideale per gestire più record poiché puoi utilizzare diverse funzioni di aggregazione come somma, contare, media, e molti altri in collaborazione con il raggruppa per funzione per arrivare a un valore distinto per riga.

A seconda dello scenario, puoi trovare duplicati con l'estensione raggruppa per funzione all'interno di una singola colonna e più colonne.

UN. Contare i duplicati in una singola colonna

Supponiamo di avere la seguente tabella di dati con due colonne: Codice prodotto E Ordini.

Codice prodotto

Ordini

2

7

2

8

2

10

9

6

10

1

10

5

12

5

12

12

12

7

14

1

14

1

47

4

47

4

Per trovare ID prodotto duplicati, puoi utilizzare il file raggruppa per funzione e il avendo clausola per filtrare i valori aggregati, come segue:

Selezionare Codice prodotto, contare(Codice prodotto) COME Conteggio totale

da sahil.product_dups

raggruppa per productid

avendo count (productid) > 1

ordina per productid;

Come con una tipica istruzione SQL, è necessario iniziare definendo le colonne che si desidera visualizzare nel risultato finale. In questo caso, vogliamo visualizzare il numero di valori duplicati all'interno del file Codice prodotto colonna.

Nel primo segmento, definire il Codice prodotto colonna all'interno del Selezionare dichiarazione. IL contare funzione segue il Codice prodotto riferimento in modo che SQL comprenda lo scopo della query.

Successivamente, definisci la tabella di origine utilizzando il file da clausola. Da contare è una funzione di aggregazione, è necessario utilizzare il raggruppa per funzione per raggruppare tutti i valori simili.

Ricorda, l'idea è di elencare i valori duplicati all'interno del file Codice prodotto colonna. Per fare ciò, è necessario filtrare il conteggio e visualizzare i valori che si verificano più di una volta nella colonna. IL avendo la clausola filtra i dati aggregati; puoi usare la condizione, cioè, conteggio (idprodotto) >1, per visualizzare i risultati desiderati.

Infine il ordinato da La clausola ordina i risultati finali in ordine crescente.

L'output è il seguente:

B. Contare i duplicati in più colonne

Quando vuoi contare i duplicati in più colonne ma non vuoi scrivere più query SQL, puoi espandere il codice sopra con alcune modifiche. Ad esempio, se desideri visualizzare righe duplicate in più colonne, puoi utilizzare il seguente codice:

Selezionare productid, ordini, contare(*) COME Conteggio totale

da sahil.product_dups

raggruppa per productid, ordini

avendo count (productid) > 1

ordina per productid;

Nell'output, noterai che vengono visualizzate solo due righe. Quando modifichi la query e aggiungi il riferimento di entrambe le colonne all'interno del file Selezionare istruzione, ottieni un conteggio delle righe corrispondenti con valori duplicati.

Invece del contare (colonna) funzione, è necessario passare il contare(*) funzione per ottenere righe duplicate. IL * la funzione alterna tutte le righe e cerca le righe duplicate anziché i singoli valori duplicati.

L'output è mostrato di seguito:

Le righe corrispondenti con ID prodotto 14 e 47 vengono visualizzate poiché i valori dell'ordine sono gli stessi.

2. Segnalazione dei duplicati con la funzione row_number()

Mentre il raggruppa per E avendo combinazione è il modo più semplice per trovare e contrassegnare i duplicati all'interno di una tabella, esiste un modo alternativo per trovare i duplicati utilizzando il numero_riga() funzione. IL numero_riga() funzione è una parte del Funzioni della finestra SQL categoria ed è essenziale per elaborare in modo efficiente le query.

Ecco come contrassegnare i duplicati utilizzando il file numero_riga() funzione:

Selezionare productid, ordini, 

row_number() over (partizione per productid ordine per productid) come sno

da sahil.product_dups;

IL numero_riga() la funzione pettina ogni valore di ID prodotto e assimila il numero di ricorrenze per ogni ID. IL partizione la parola chiave segrega i valori duplicati e assegna i valori in ordine cronologico, come 1, 2,3 e così via.

Se non usi il partizione parola chiave, avrai un numero di serie univoco per tutti gli ID prodotto, che non si adatta al tuo scopo.

IL ordinato da la clausola all'interno della sezione di partizione è funzionale quando si definisce l'ordine di ordinamento. Puoi scegliere tra ordine crescente (predefinito) e decrescente.

Infine, puoi assegnare un alias alla colonna per semplificare il filtraggio successivo (se necessario).

3. Eliminazione di righe duplicate da una tabella SQL

Poiché i valori duplicati in una tabella possono distorcere l'analisi, eliminarli durante la fase di pulizia dei dati è spesso imperativo. SQL è un linguaggio prezioso che offre modi per tracciare ed eliminare i tuoi valori duplicati in modo efficiente.

UN. Utilizzando la parola chiave distinta

IL distinto parola chiave è probabilmente la funzione SQL più comune e utilizzata di frequente per rimuovere i valori duplicati in una tabella. Puoi rimuovere i duplicati da una singola colonna o persino duplicare le righe in una volta sola.

Ecco come rimuovere i duplicati da una singola colonna:

Selezionaredistinto Codice prodotto da sahil.product_dups;

L'output restituisce un elenco di tutti gli ID prodotto univoci dalla tabella.

Per rimuovere le righe duplicate, puoi modificare il codice sopra come segue:

Selezionaredistinto * da sahil.product_dups;

L'output restituisce un elenco di tutte le righe univoche della tabella. Osservando l'output, noterai che gli ID prodotto 14 e 47 vengono visualizzati solo una volta nella tabella dei risultati finali.

B. Utilizzo del metodo CTE (Common Table Expression).

Il metodo Common Table Expression (CTE) differisce leggermente dal codice SQL mainstream. I CTE sono simili a Le tabelle temporanee di SQL, con l'unica differenza che sono virtuali, a cui puoi fare riferimento solo durante l'esecuzione della query.

Il più grande vantaggio è che non devi passare una query separata per eliminare queste tabelle in un secondo momento, poiché cessano di esistere non appena viene eseguita la query. Utilizzando il metodo CTE, puoi utilizzare il codice seguente per trovare ed eliminare i duplicati.

con cteproducts COME

(Selezionare productid, ordini,

row_number() over (partizione per productid ordine per productid) come sno

da sahil.product_dups)

Selezionare * da cteproducts

dove sno = 1;

È possibile richiamare la funzione CTE utilizzando il con parola chiave; definire il nome della tabella virtuale temporanea dopo il con parola chiave. Il riferimento alla tabella CTE è utile durante il filtraggio dei valori della tabella.

Nella parte successiva, assegna i numeri di riga ai tuoi ID prodotto utilizzando il numero_riga() funzione. Poiché fai riferimento a ciascun ID prodotto con a partizione funzione, ogni ID ricorrente ha un valore distinto.

Infine, filtra il nuovo creato sn colonna nell'ultimo segmento con un altro Selezionare dichiarazione. Imposta questo filtro su 1 per ottenere valori univoci nell'output finale.

Impara a usare SQL in modo semplice

SQL e le sue varianti sono diventate il discorso della città, con la sua innata capacità di interrogare e utilizzare database relazionali. Dalla scrittura di semplici query all'esecuzione di analisi elaborate con sottoquery, questo linguaggio ha un po' di tutto.

Tuttavia, prima di scrivere qualsiasi domanda, devi affinare le tue abilità e decifrare i codici per diventare un abile programmatore. Puoi imparare SQL in modo divertente implementando le tue conoscenze nei giochi. Impara alcune fantasiose sfumature di codifica aggiungendo un po' di divertimento al tuo codice.