Abordarea valorilor duplicate în SQL poate fi o sarcină greoaie. Dar nu vă temeți, acest ghid este aici pentru a vă ușura povara.

Datele vin în toate formele și formele, dar înregistrările duplicate sunt o parte importantă a fiecărui format de date. Indiferent dacă aveți de-a face cu date bazate pe web sau pur și simplu navigați printr-un camion de date de vânzări, analiza dvs. va fi denaturată dacă aveți valori duplicate.

Folosiți SQL pentru a vă analiza numerele și pentru a efectua interogări lungi pe stivele dvs. de date? Dacă da, atunci acest ghid despre gestionarea duplicatelor SQL va fi o încântare absolută pentru dvs.

Iată câteva moduri diferite pe care le puteți utiliza pentru a gestiona duplicatele folosind SQL.

1. Numărarea duplicatelor utilizând gruparea după funcție

SQL este un limbaj de programare cu mai multe fațete care oferă diverse funcții pentru a simplifica calculele. Dacă aveți multă experiență cu funcțiile de agregare în SQL, este posibil să fiți deja familiarizat cu grupați după funcție și pentru ce poate fi folosit.

The a se grupa cu funcția este una dintre cele mai de bază comenzi SQL, care este ideal pentru a trata mai multe înregistrări, deoarece puteți utiliza diferite funcții de agregare, cum ar fi sumă, numara, in medie, și multe altele împreună cu a se grupa cu funcția pentru a ajunge la o valoare distinctă pe rând.

În funcție de scenariu, puteți găsi duplicate cu a se grupa cu funcția într-o singură coloană și mai multe coloane.

A. Numărați duplicatele într-o singură coloană

Să presupunem că aveți următorul tabel de date cu două coloane: ID produs și Comenzi.

ID produs

Comenzi

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

Pentru a găsi ID-uri de produs duplicat, puteți utiliza a se grupa cu funcția și având clauză pentru a filtra valorile agregate, după cum urmează:

Selectați productid, numara(productid) la fel de Numărătoare totală

de la sahil.product_dups

grupează după productid

având număr (productid) > 1

ordona dupa productid;

Ca și în cazul unei instrucțiuni SQL tipice, trebuie să începeți prin a defini coloanele pe care doriți să le afișați în rezultatul final. În acest caz, dorim să afișăm numărul de valori duplicate din ID produs coloană.

În primul segment, definiți ID produs coloana din cadrul Selectați afirmație. The numara funcția urmează ID produs referință, astfel încât SQL să înțeleagă scopul interogării dvs.

Apoi, definiți tabelul sursă folosind din clauză. De cand numara este o funcție de agregare, trebuie să utilizați a se grupa cu funcția de grupare a tuturor valorilor similare.

Amintiți-vă, ideea este să enumerați valorile duplicate în interiorul ID produs coloană. Pentru a face acest lucru, trebuie să filtrați numărul și să afișați valorile care apar de mai multe ori în coloană. The având clauza filtrează datele agregate; puteți folosi condiția, adică count (productid) >1, pentru a afișa rezultatele dorite.

În cele din urmă, cel comanda de clauza sortează rezultatele finale în ordine crescătoare.

Ieșirea este după cum urmează:

b. Numărați duplicatele în mai multe coloane

Când doriți să numărați duplicatele în mai multe coloane, dar nu doriți să scrieți mai multe interogări SQL, puteți extinde codul de mai sus cu câteva modificări. De exemplu, dacă doriți să afișați rânduri duplicat în mai multe coloane, puteți utiliza următorul cod:

Selectați productid, comenzi, numara(*) la fel de Numărătoare totală

de la sahil.product_dups

grupați după productid, comenzi

având număr (productid) > 1

ordona dupa productid;

În rezultat, veți observa că sunt afișate doar două rânduri. Când modificați interogarea și adăugați referința ambelor coloane în interiorul Selectați declarație, obțineți un număr de rânduri care se potrivesc cu valori duplicate.

In loc de numărare (coloană) funcția, trebuie să treceți numara(*) funcția pentru a obține rânduri duplicat. The * funcția comută între toate rândurile și caută rânduri duplicate în loc de valori duplicate individuale.

Ieșirea este afișată mai jos:

Rândurile corespunzătoare cu ID-ul produsului 14 și 47 sunt afișate, deoarece valorile comenzii sunt aceleași.

2. Marcarea duplicatelor cu funcția row_number().

In timp ce a se grupa cu și având combinația este cea mai simplă modalitate de a găsi și semnaliza duplicatele într-un tabel, există o modalitate alternativă de a găsi duplicate folosind row_number() funcţie. The row_number() funcția este o parte a Funcțiile ferestrei SQL categorie și este esențială pentru procesarea eficientă a interogărilor dvs.

Iată cum puteți semnala duplicatele folosind row_number() funcţie:

Selectați productid, comenzi, 

row_number() peste (partiție după productid ordinea producției) ca sno

de la sahil.product_dups;

The row_number() funcția parcurge fiecare valoare ID de produs și asimilează numărul de recurențe pentru fiecare ID. The compartimentare cuvântul cheie separă valorile duplicate și atribuie valori cronologic, cum ar fi 1, 2, 3 și așa mai departe.

Dacă nu utilizați compartimentare cuvânt cheie, veți avea un număr de serie unic pentru toate ID-urile de produs, care nu se potrivește scopului dvs.

The comanda de clauza din secțiunea de partiție este funcțională atunci când se definește ordinea de sortare. Puteți alege între ordine crescătoare (implicit) și descrescătoare.

În cele din urmă, puteți atribui un alias coloanei pentru a facilita filtrarea ulterioară (dacă este necesar).

3. Ștergerea rândurilor duplicate dintr-un tabel SQL

Deoarece valorile duplicate dintr-un tabel vă pot denatura analiza, eliminarea lor în timpul etapei de curățare a datelor este adesea imperativă. SQL este un limbaj valoros care oferă modalități de urmărire și ștergere eficientă a valorilor duplicate.

A. Folosind cuvântul cheie distinct

The distinct cuvântul cheie este probabil cea mai comună și utilizată funcție SQL pentru a elimina valorile duplicate dintr-un tabel. Puteți elimina duplicatele dintr-o singură coloană sau chiar și rândurile duplicate dintr-o singură mișcare.

Iată cum puteți elimina duplicatele dintr-o singură coloană:

Selectațidistinct productid din sahil.product_dups;

Rezultatul returnează o listă cu toate ID-urile unice de produs din tabel.

Pentru a elimina rândurile duplicate, puteți modifica codul de mai sus după cum urmează:

Selectațidistinct * din sahil.product_dups;

Ieșirea returnează o listă cu toate rândurile unice din tabel. Privind rezultatul, veți observa că ID-urile de produs 14 și 47 apar o singură dată în tabelul cu rezultate finale.

b. Folosind metoda expresiei comune a tabelului (CTE).

Metoda Common Table Expression (CTE) diferă ușor de codul SQL principal. CTE-urile sunt similare cu Tabelele temporare ale SQL, singura diferență fiind că sunt virtuale, la care puteți face referire numai în timpul execuției interogării.

Cel mai mare beneficiu este că nu trebuie să treceți o interogare separată pentru a elimina aceste tabele mai târziu, deoarece acestea încetează să existe de îndată ce interogarea este executată. Folosind metoda CTE, puteți folosi codul de mai jos pentru a găsi și șterge duplicatele.

cu cteproduse la fel de

(Selectați productid, comenzi,

row_number() peste (partiție după productid ordinea producției) ca sno

de la sahil.product_dups)

Selectați * din cteproduse

unde sno = 1;

Puteți invoca funcția CTE folosind cu cuvânt cheie; definiți numele tabelului virtual temporar după cu cuvânt cheie. Referința tabelului CTE este utilă în timp ce filtrați valorile tabelului.

În partea următoare, atribuiți numere de rând ID-urilor dvs. de produs folosind row_number() funcţie. Deoarece faceți referire la fiecare ID de produs cu a compartimentare funcție, fiecare ID recurent are o valoare distinctă.

În cele din urmă, filtrați noul creat sno coloana din ultimul segment cu alta Selectați afirmație. Setați acest filtru la 1 pentru a obține valori unice în rezultatul final.

Învață să folosești SQL în mod ușoară

SQL și variantele sale au devenit discutii în oraș, cu capacitatea sa înnăscută de a interoga și de a utiliza baze de date relaționale. De la scrierea de interogări simple până la efectuarea de analize elaborate cu sub-interogări, acest limbaj are puțin din toate.

Cu toate acestea, înainte de a scrie orice întrebări, trebuie să vă perfecționați abilitățile și să folosiți codurile pentru a vă transforma într-un programator expert. Puteți învăța SQL într-un mod distractiv prin implementarea cunoștințelor dvs. în jocuri. Aflați câteva nuanțe de codare fanteziste adăugând puțină distracție codului dvs.