Dubleerivate väärtustega tegelemine SQL-is võib olla tülikas ülesanne. Kuid ärge kartke, see juhend on mõeldud teie koorma leevendamiseks.

Andmeid on igasugusel kujul, kuid dubleeritud kirjed on iga andmevormingu silmapaistev osa. Olenemata sellest, kas tegelete veebipõhiste andmetega või lihtsalt navigeerite veoautotäie müügiandmetes, on teie analüüs moonutatud, kui teil on dubleerivad väärtused.

Kas kasutate SQL-i numbrite kokkusurumiseks ja andmevirnade kohta pikkade päringute tegemiseks? Kui jah, siis pakub see SQL-i duplikaatide haldamise juhend teile täielikku rõõmu.

Siin on mõned erinevad viisid, mida saate kasutada duplikaatide haldamiseks SQL-i abil.

1. Duplikaatide loendamine funktsioonide järgi rühmitamise abil

SQL on mitmetahuline programmeerimiskeel, mis pakub arvutuste lihtsustamiseks erinevaid funktsioone. Kui teil on SQL-i liitmisfunktsioonidega palju kogemusi, võite olla juba tuttav funktsiooni järgi ja milleks seda kasutada saab.

The rühma järgi funktsioon on üks kõige elementaarsemad SQL-käsud

instagram viewer
, mis sobib ideaalselt mitme kirjega tegelemiseks, kuna saate kasutada erinevaid koondfunktsioone, nagu summa, loendama, keskmineja paljud teised koos rühma järgi funktsiooni, et jõuda selge reapõhise väärtuseni.

Olenevalt stsenaariumist leiate duplikaate rühma järgi funktsiooni ühes veerus ja mitmes veerus.

a. Loendage duplikaadid ühes veerus

Oletame, et teil on järgmine kahe veeruga andmetabel: Toote ID ja Tellimused.

Toote ID

Tellimused

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

Duplikaattoote ID-de leidmiseks võite kasutada rühma järgi funktsioon ja millel klausel koondväärtuste filtreerimiseks järgmiselt:

vali produktiivne, loendama(toodetud) nagu Total_count

saidilt sahil.product_dups

rühmitus toodete kaupa

mille arv (toode) > 1

tellida toote järgi;

Nagu tavalise SQL-lause puhul, peate alustama veergude määratlemisest, mida soovite lõpptulemuses kuvada. Sel juhul tahame kuvada dubleerivate väärtuste arvu Toote ID veerg.

Esimeses segmendis määratlege Toote ID veerus vali avaldus. The loendama funktsioon järgib Toote ID viide, et SQL mõistaks teie päringu eesmärki.

Järgmisena määrake lähtetabel, kasutades nuppu alates klausel. Alates loendama on liitmisfunktsioon, peate kasutama rühma järgi funktsiooni kõigi sarnaste väärtuste rühmitamiseks.

Pidage meeles, et idee on loendis dubleerivad väärtused Toote ID veerg. Selleks peate filtreerima veerus rohkem kui korra esinevaid loendusi ja kuvatavaid väärtusi. The millel klausel filtreerib koondandmed; võite kasutada tingimust, st arv (toode) >1, soovitud tulemuste kuvamiseks.

Lõpuks, tellida klausel sorteerib lõpptulemused kasvavas järjekorras.

Väljund on järgmine:

b. Loendage duplikaate mitmes veerus

Kui soovite loendada duplikaate mitmes veerus, kuid ei soovi kirjutada mitut SQL-päringut, saate ülaltoodud koodi mõne näpunäidetega laiendada. Näiteks kui soovite kuvada topeltridu mitmes veerus, saate kasutada järgmist koodi.

vali toodang, tellimused, loendama(*) nagu Total_count

saidilt sahil.product_dups

rühm toodete, tellimuste järgi

mille arv (toode) > 1

tellida toote järgi;

Väljundis märkate, et kuvatakse ainult kaks rida. Kui kohandate päringut ja lisate mõlema veeru viite vali lause, saate topeltväärtustega sobivate ridade arvu.

Selle asemel, arv (veerg) funktsiooni, peate läbima loendama (*) funktsioon topeltridade saamiseks. The * Funktsioon lülitub läbi kõikide ridade ja otsib üksikute dubleerivate väärtuste asemel korduvaid ridu.

Väljund on näidatud allpool:

Kuvatakse vastavad read toote ID-ga 14 ja 47, kuna tellimuse väärtused on samad.

2. Duplikaatide märgistamine funktsiooniga row_number()

Samal ajal kui rühma järgi ja millel kombinatsioon on lihtsaim viis tabelis duplikaatide leidmiseks ja märgistamiseks, duplikaatide leidmiseks on alternatiivne viis rea_number() funktsiooni. The rea_number() funktsioon on osa SQL akna funktsioonid kategooriasse ja on teie päringute tõhusaks töötlemiseks hädavajalik.

Siit saate teada, kuidas saate duplikaate märgistada kasutades rea_number() funktsioon:

vali toodang, tellimused, 

row_number() over (jaotus tootenumbri järgi järjestus tootekoodi järgi) kui sno

saidilt sahil.product_dups;

The rea_number() funktsioon kammib läbi iga toote ID väärtuse ja assimileerib iga ID korduste arvu. The vahesein märksõna eraldab dubleerivad väärtused ja määrab väärtused kronoloogiliselt, näiteks 1, 2, 3 jne.

Kui te ei kasuta vahesein märksõna, on teil kõigi toote ID-de jaoks kordumatu seerianumber, mis ei vasta teie eesmärgile.

The tellida sektsioonis olev klausel toimib sortimisjärjestuse määratlemisel. Saate valida kasvava (vaikimisi) ja kahaneva järjestuse vahel.

Lõpuks saate veerule määrata pseudonüümi, et hõlbustada hilisemat filtreerimist (vajadusel).

3. Duplikaatridade kustutamine SQL-i tabelist

Kuna tabelis olevad topeltväärtused võivad teie analüüsi moonutada, on nende eemaldamine andmete puhastamisetapis sageli hädavajalik. SQL on väärtuslik keel, mis pakub võimalusi dubleerivate väärtuste tõhusaks jälgimiseks ja kustutamiseks.

a. Kasutades eraldi märksõna

The eristatav märksõna on ilmselt kõige levinum ja sagedamini kasutatav SQL-i funktsioon tabelist dubleerivate väärtuste eemaldamiseks. Saate ühekordselt eemaldada duplikaadid ühest veerust või isegi ridade duplikaate.

Saate ühest veerust duplikaate eemaldada järgmiselt.

valieristatav produktiivne alates sahil.product_dups;

Väljund tagastab tabelist kõigi kordumatute toote ID-de loendi.

Duplikaatridade eemaldamiseks saate ülaltoodud koodi muuta järgmiselt.

valieristatav * alates sahil.product_dups;

Väljund tagastab loendi kõigist tabeli kordumatutest ridadest. Väljundit vaadates märkate, et toote ID-d 14 ja 47 kuvatakse lõpptulemuste tabelis ainult üks kord.

b. Common Table Expression (CTE) meetodi kasutamine

Common Table Expression (CTE) meetod erineb veidi tavapärast SQL-koodi. CTE-d on sarnased SQL-i ajutised tabelid, mille ainus erinevus seisneb selles, et need on virtuaalsed, millele saate viidata ainult päringu täitmise ajal.

Suurim eelis on see, et te ei pea nendest tabelitest hiljem loobumiseks eraldi päringut edastama, kuna need lakkavad eksisteerimast kohe pärast päringu käivitamist. Kasutades CTE meetodit, saate duplikaatide otsimiseks ja kustutamiseks kasutada allolevat koodi.

koos cteproducts nagu

(vali toodang, tellimused,

row_number() over (jaotus tootenumbri järgi järjestus tootekoodi järgi) kui sno

saidilt sahil.product_dups)

vali * alates cteproducts

kus sno = 1;

Saate CTE funktsiooni käivitada, kasutades koos märksõna; määrake ajutise virtuaalse tabeli nimi pärast koos märksõna. CTE tabeli viide on kasulik tabeli väärtuste filtreerimisel.

Järgmises osas määrake oma toote ID-dele reanumbrid, kasutades rea_number() funktsiooni. Kuna viitate igale toote ID-le a vahesein funktsiooni, on igal korduval ID-l erinev väärtus.

Lõpuks filtreerige vastloodud sno veerus viimases segmendis teisega vali avaldus. Määrake selle filtri väärtuseks 1, et saada lõplikus väljundis kordumatuid väärtusi.

Õppige SQL-i lihtsal viisil kasutama

SQL ja selle variandid on muutunud kõneaineks oma loomupärase võimega teha päringuid ja kasutada relatsiooniandmebaase. Alates lihtsate päringute kirjutamisest kuni põhjalike analüüside tegemiseni alampäringute abil on selles keeles natuke kõike.

Kuid enne päringute kirjutamist peate oma oskusi lihvima ja koodidega hakkama saama, et saada endast vilunud kodeerija. SQL-i saate lõbusalt õppida, rakendades oma teadmisi mängudes. Õppige mõningaid väljamõeldud kodeerimise nüansse, lisades oma koodile veidi nalja.