Suočavanje s dupliciranim vrijednostima u SQL-u može biti glomazan zadatak. Ali ne bojte se, ovaj vodič je tu da vam olakša teret.

Podaci dolaze u svim oblicima i oblicima, ali dupli zapisi su istaknuti dio svakog formata podataka. Bilo da radite s podacima temeljenim na webu ili jednostavno navigirate kroz gomilu podataka o prodaji, vaša će analiza biti iskrivljena ako imate duplicirane vrijednosti.

Koristite li SQL za obradu brojeva i izvođenje dugih upita nad hrpom podataka? Ako da, onda će vam ovaj vodič o upravljanju SQL duplikatima biti apsolutni užitak.

Evo nekoliko različitih načina na koje možete upravljati duplikatima pomoću SQL-a.

1. Brojanje duplikata pomoću grupe po funkciji

SQL je višestruki programski jezik koji nudi različite funkcije za pojednostavljenje izračuna. Ako imate dosta iskustva s funkcijama agregacije u SQL-u, možda ste već upoznati s grupirati po funkciji i za što se može koristiti.

The grupirati po funkcija je jedna od najosnovnije SQL naredbe, što je idealno za rad s višestrukim zapisima budući da možete koristiti različite agregatne funkcije poput

instagram viewer
iznos, računati, prosjek, i mnogi drugi u kombinaciji s grupirati po funkciju da biste došli do različite vrijednosti u redu.

Ovisno o scenariju, možete pronaći duplikate s grupirati po funkcioniraju unutar jednog stupca i više stupaca.

a. Brojite duplikate u jednom stupcu

Pretpostavimo da imate sljedeću podatkovnu tablicu s dva stupca: Identifikacijski broj proizvoda i Narudžbe.

Identifikacijski broj proizvoda

Narudžbe

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

Da biste pronašli dvostruke ID-ove proizvoda, možete koristiti grupirati po funkcija i imajući klauzula za filtriranje agregiranih vrijednosti, kako slijedi:

Izaberi Identifikacijski broj proizvoda, računati(Identifikacijski broj proizvoda) kao Ukupni_broj

od sahil.product_dups

grupiraj po productid

ima broj (productid) > 1

poredak po productid-u;

Kao i kod tipične SQL naredbe, morate početi definiranjem stupaca koje želite prikazati u konačnom rezultatu. U ovom slučaju želimo prikazati broj dupliciranih vrijednosti unutar Identifikacijski broj proizvoda stupac.

U prvom segmentu definirajte Identifikacijski broj proizvoda stupac unutar Izaberi izjava. The računati funkcija slijedi Identifikacijski broj proizvoda referencu kako bi SQL razumio svrhu vašeg upita.

Zatim definirajte izvornu tablicu pomoću iz klauzula. Od računati je funkcija združivanja, trebate koristiti grupirati po funkcija za grupiranje svih sličnih vrijednosti.

Zapamtite, ideja je navesti duplicirane vrijednosti unutar Identifikacijski broj proizvoda stupac. Da biste to učinili, morate filtrirati brojanje i prikazati vrijednosti koje se pojavljuju više puta u stupcu. The imajući klauzula filtrira agregirane podatke; možete koristiti uvjet, tj. broj (productid) >1, za prikaz željenih rezultata.

Konačno, naručiti po klauzula sortira konačne rezultate uzlaznim redoslijedom.

Izlaz je sljedeći:

b. Brojite duplikate u više stupaca

Kada želite brojati duplikate u više stupaca, ali ne želite pisati više SQL upita, možete proširiti gornji kod s nekoliko podešavanja. Na primjer, ako želite prikazati duplicirane retke u više stupaca, možete upotrijebiti sljedeći kod:

Izaberi productid, narudžbe, računati(*) kao Ukupni_broj

od sahil.product_dups

grupiranje po productid-u, narudžbe

ima broj (productid) > 1

poredak po productid-u;

U ispisu ćete primijetiti da su prikazana samo dva retka. Kada prilagodite upit i dodate referencu oba stupca unutar Izaberi naredbe, dobivate broj podudarnih redaka s dupliciranim vrijednostima.

Umjesto brojati (stupac) funkciju, morate proći računati(*) funkcija za dobivanje duplih redaka. The * funkcija prelazi kroz sve retke i traži duplicirane retke umjesto pojedinačnih dupliciranih vrijednosti.

Ishod je prikazan u nastavku:

Prikazuju se odgovarajući retci s ID-om proizvoda 14 i 47 jer su vrijednosti narudžbe iste.

2. Označavanje duplikata s funkcijom row_number().

Dok grupirati po i imajući kombinacija je najjednostavniji način za pronalaženje i označavanje duplikata unutar tablice, postoji alternativni način za pronalaženje duplikata pomoću broj_reda() funkcija. The broj_reda() funkcija je dio Funkcije SQL prozora kategoriju i ključna je za učinkovitu obradu vaših upita.

Evo kako možete označiti duplikate pomoću broj_reda() funkcija:

Izaberi productid, narudžbe, 

row_number() preko (particija po productid poredak po productid) kao sno

od sahil.product_dups;

The broj_reda() funkcija pročešljava svaku vrijednost ID-a proizvoda i asimilira broj ponavljanja za svaki ID. The pregrada ključna riječ odvaja duplicirane vrijednosti i dodjeljuje vrijednosti kronološki, poput 1, 2,3 i tako dalje.

Ako ne koristite pregrada ključnu riječ, imat ćete jedinstveni serijski broj za sve ID-ove proizvoda, što neće odgovarati vašoj svrsi.

The naručiti po klauzula unutar odjeljka particije funkcionalna je pri definiranju redoslijeda sortiranja. Možete birati između uzlaznog (zadano) i silaznog redoslijeda.

Konačno, možete dodijeliti pseudonim stupcu kako biste kasnije olakšali filtriranje (ako je potrebno).

3. Brisanje duplikata redaka iz SQL tablice

Budući da duplicirane vrijednosti u tablici mogu iskriviti vašu analizu, njihovo uklanjanje tijekom faze čišćenja podataka često je imperativ. SQL je vrijedan jezik koji nudi načine za učinkovito praćenje i brisanje dupliciranih vrijednosti.

a. Korištenje različite ključne riječi

The različita ključna riječ je vjerojatno najuobičajenija i najčešće korištena SQL funkcija za uklanjanje duplih vrijednosti u tablici. Možete ukloniti duplikate iz jednog stupca ili čak duplikate redaka u jednom potezu.

Evo kako možete ukloniti duplikate iz jednog stupca:

Izaberirazličita Identifikacijski broj proizvoda iz sahil.product_dups;

Izlaz vraća popis svih jedinstvenih ID-ova proizvoda iz tablice.

Da biste uklonili duplicirane retke, možete podesiti gornji kod na sljedeći način:

Izaberirazličita * iz sahil.product_dups;

Izlaz vraća popis svih jedinstvenih redaka iz tablice. Gledajući izlaz, primijetit ćete da se ID-ovi proizvoda 14 i 47 pojavljuju samo jednom u tablici konačnog rezultata.

b. Korištenje metode zajedničkog tabličnog izraza (CTE).

Metoda Common Table Expression (CTE) malo se razlikuje od glavnog SQL koda. CTE su slični SQL-ove privremene tablice, s jedinom razlikom što su virtualni, na koje se možete pozivati ​​samo tijekom izvođenja upita.

Najveća prednost je ta što ne morate proslijediti zaseban upit da biste kasnije ispustili te tablice jer one prestaju postojati čim se upit izvrši. Koristeći CTE metodu, možete koristiti kod u nastavku za pronalaženje i brisanje duplikata.

s cteproducts kao

(Izaberi productid, narudžbe,

row_number() preko (particija po productid poredak po productid) kao sno

od sahil.product_dups)

Izaberi * iz cteproducts

gdje je sno = 1;

Funkciju CTE možete pozvati pomoću s ključna riječ; definirajte naziv privremene virtualne tablice nakon s ključna riječ. Referenca tablice CTE korisna je prilikom filtriranja vrijednosti tablice.

U sljedećem dijelu dodijelite brojeve redaka vašim ID-ovima proizvoda pomoću broj_reda() funkcija. Budući da svaki ID proizvoda navodite s a pregrada funkcija, svaki ID koji se ponavlja ima zasebnu vrijednost.

Na kraju, filtrirajte novostvoreno sno stupac u zadnjem segmentu s drugim Izaberi izjava. Postavite ovaj filtar na 1 da biste dobili jedinstvene vrijednosti u konačnom izlazu.

Naučite koristiti SQL na jednostavan način

SQL i njegove varijante postali su tema o kojoj se priča, sa svojom urođenom sposobnošću postavljanja upita i korištenja relacijskih baza podataka. Od pisanja jednostavnih upita do izvođenja složenih analiza s podupitima, ovaj jezik ima od svega pomalo.

Međutim, prije nego što napišete bilo kakav upit, morate usavršiti svoje vještine i početi probijati kodove kako biste postali vješt koder. SQL možete naučiti na zabavan način implementirajući svoje znanje u igrama. Naučite neke otmjene nijanse kodiranja dodavanjem malo zabave svom kodu.