Darbas su pasikartojančiomis reikšmėmis SQL gali būti sudėtinga užduotis. Tačiau nebijokite, šis vadovas skirtas palengvinti jūsų naštą.

Duomenys būna įvairių formų ir formų, tačiau pasikartojantys įrašai yra svarbi kiekvieno duomenų formato dalis. Nesvarbu, ar dirbate su žiniatinkliu pagrįstais duomenimis, ar tiesiog naršote per sunkvežimio pardavimo duomenis, jūsų analizė bus iškreipta, jei turėsite pasikartojančių verčių.

Ar naudojate SQL, kad sutrumpinti savo skaičius ir atlikti ilgas užklausas savo duomenų krūvose? Jei taip, tada šis SQL dublikatų valdymo vadovas jums tikrai patiks.

Štai keli skirtingi būdai, kuriais galite valdyti dublikatus naudodami SQL.

1. Dublikatų skaičiavimas naudojant grupavimą pagal funkciją

SQL yra daugialypė programavimo kalba, siūlanti įvairias funkcijas, skirtas supaprastinti skaičiavimus. Jei turite daug patirties su SQL agregavimo funkcijomis, galbūt jau esate susipažinę su sugrupuoti pagal funkciją ir kam ji gali būti naudojama.

The Grupuoti pagal funkcija yra viena iš

instagram viewer
pagrindinės SQL komandos, kuris idealiai tinka tvarkyti kelis įrašus, nes galite naudoti įvairias agregavimo funkcijas, pvz suma, skaičiuoti, vidutinis, ir daugelis kitų kartu su Grupuoti pagal funkcija, kad gautumėte atskirą eilučių reikšmę.

Atsižvelgiant į scenarijų, galite rasti dublikatus su Grupuoti pagal funkcija viename stulpelyje ir keliuose stulpeliuose.

a. Suskaičiuokite dublikatus viename stulpelyje

Tarkime, kad turite šią duomenų lentelę su dviem stulpeliais: Produkto ID ir Užsakymai.

Produkto ID

Užsakymai

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

Norėdami rasti pasikartojančius produktų ID, galite naudoti Grupuoti pagal funkcija ir turintys sąlygą, kad būtų galima filtruoti sukauptas reikšmes, kaip nurodyta toliau:

pasirinkite produktyvus, skaičiuoti(gaminamas) kaip Total_count

iš sahil.product_dups

grupė pagal gaminius

kurių skaičius (produktas) > 1

užsakymas pagal gaminį;

Kaip ir įprastą SQL sakinį, pirmiausia turite apibrėžti stulpelius, kuriuos norite rodyti galutiniame rezultate. Tokiu atveju norime parodyti pasikartojančių reikšmių skaičių Produkto ID stulpelyje.

Pirmajame segmente apibrėžkite Produkto ID stulpelyje pasirinkite pareiškimas. The skaičiuoti funkcija seka Produkto ID nuoroda, kad SQL suprastų jūsų užklausos tikslą.

Tada nustatykite šaltinio lentelę naudodami sąlyga. Nuo skaičiuoti yra agregavimo funkcija, turite naudoti Grupuoti pagal funkcija sugrupuoti visas panašias reikšmes.

Atminkite, kad idėja yra nurodyti pasikartojančias vertes Produkto ID stulpelyje. Norėdami tai padaryti, turite filtruoti skaičių ir rodyti vertes, kurios stulpelyje atsiranda daugiau nei vieną kartą. The turintys sąlyga filtruoja sukauptus duomenis; galite naudoti sąlygą, t.y. skaičius (produktas) >1, kad būtų rodomi norimi rezultatai.

Galiausiai, Rūšiuoti pagal sąlyga surūšiuoja galutinius rezultatus didėjimo tvarka.

Išvestis yra tokia:

b. Suskaičiuokite dublikatus keliuose stulpeliuose

Jei norite skaičiuoti dublikatus keliuose stulpeliuose, bet nenorite rašyti kelių SQL užklausų, aukščiau pateiktą kodą galite išplėsti keliais pataisymais. Pavyzdžiui, jei norite rodyti pasikartojančias eilutes keliuose stulpeliuose, galite naudoti šį kodą:

pasirinkite gaminiai, užsakymai, skaičiuoti(*) kaip Total_count

iš sahil.product_dups

grupė pagal gaminius, užsakymus

kurių skaičius (produktas) > 1

užsakymas pagal gaminį;

Išvestyje pastebėsite, kad rodomos tik dvi eilutės. Kai pakoreguojate užklausą ir įtraukite abiejų stulpelių nuorodas pasirinkite teiginį, gausite atitinkančių eilučių su pasikartojančiomis reikšmėmis skaičių.

Vietoj to skaičius (stulpelis) funkciją, turite išlaikyti skaiciuoti (*) funkcija gauti pasikartojančias eilutes. The * funkcija perjungia visas eilutes ir ieško pasikartojančių eilučių, o ne atskirų pasikartojančių reikšmių.

Išvestis parodyta žemiau:

Rodomos atitinkamos eilutės su produkto ID 14 ir 47, nes užsakymo reikšmės yra vienodos.

2. Pasikartojančių ženklų žymėjimas naudojant eilės_numerio() funkciją

Kol Grupuoti pagal ir turintys derinys yra paprasčiausias būdas rasti ir pažymėti dublikatus lentelėje, yra alternatyvus būdas rasti dublikatus naudojant eilutės_numeris() funkcija. The eilutės_numeris() funkcija yra dalis SQL lango funkcijos kategorija ir yra būtina norint efektyviai apdoroti jūsų užklausas.

Štai kaip galite pažymėti dublikatus naudodami eilutės_numeris() funkcija:

pasirinkite gaminiai, užsakymai, 

eilutės_numeris() over (skirstymas pagal produkto identifikatorių užsakymą pagal produkto identifikatorių) kaip sno

iš sahil.product_dups;

The eilutės_numeris() funkcija peržiūri kiekvieną produkto ID reikšmę ir priskiria kiekvieno ID pasikartojimų skaičių. The pertvara raktinis žodis atskiria pasikartojančias reikšmes ir priskiria reikšmes chronologiškai, pvz., 1, 2, 3 ir pan.

Jei nenaudojate pertvara raktinį žodį, turėsite unikalų visų produktų ID serijos numerį, kuris netiks jūsų tikslams.

The Rūšiuoti pagal skirsnio skirsnis veikia apibrėžiant rūšiavimo tvarką. Galite pasirinkti didėjančią (numatytąją) ir mažėjimo tvarką.

Galiausiai stulpeliui galite priskirti slapyvardį, kad vėliau būtų lengviau filtruoti (jei reikia).

3. Pasikartojančių eilučių ištrynimas iš SQL lentelės

Kadangi pasikartojančios vertės lentelėje gali iškreipti jūsų analizę, dažnai būtina jas pašalinti duomenų valymo etape. SQL yra vertinga kalba, kuri siūlo būdus efektyviai stebėti ir ištrinti pasikartojančias vertes.

a. Naudojant atskirą raktinį žodį

The skiriasi raktinis žodis yra turbūt labiausiai paplitusi ir dažniausiai naudojama SQL funkcija, skirta pašalinti pasikartojančias reikšmes iš lentelės. Galite pašalinti dublikatus iš vieno stulpelio arba net pasikartojančias eilutes vienu metu.

Štai kaip galite pašalinti dublikatus iš vieno stulpelio:

pasirinkiteskiriasi produktyvus  sahil.product_dups;

Išvestis pateikia visų unikalių produktų ID iš lentelės sąrašą.

Norėdami pašalinti pasikartojančias eilutes, galite pakoreguoti aukščiau pateiktą kodą taip:

pasirinkiteskiriasi *  sahil.product_dups;

Išvestis pateikia visų unikalių lentelės eilučių sąrašą. Žvelgdami į išvestį pastebėsite, kad produkto ID 14 ir 47 galutinių rezultatų lentelėje rodomi tik vieną kartą.

b. Bendrosios lentelės išraiškos (CTE) metodo naudojimas

Bendrosios lentelės išraiškos (CTE) metodas šiek tiek skiriasi nuo įprasto SQL kodo. CTE yra panašūs į SQL laikinosios lentelės, vienintelis skirtumas yra tas, kad jie yra virtualūs, kuriuos galite nurodyti tik vykdydami užklausą.

Didžiausias privalumas yra tai, kad jums nereikia perduoti atskiros užklausos, kad vėliau atmestumėte šias lenteles, nes jos nustoja egzistuoti, kai tik vykdoma užklausa. Naudodami CTE metodą, galite naudoti toliau pateiktą kodą dublikatams rasti ir ištrinti.

su cteproducts kaip

(pasirinkite gaminiai, užsakymai,

eilutės_numeris() over (skirstymas pagal produkto identifikatorių užsakymą pagal produkto identifikatorių) kaip sno

iš sahil.product_dups)

pasirinkite * cteproducts

kur sno = 1;

CTE funkciją galite iškviesti naudodami su raktažodis; apibrėžkite laikinosios virtualiosios lentelės pavadinimą po su raktažodį. CTE lentelės nuoroda yra naudinga filtruojant lentelės reikšmes.

Kitoje dalyje savo produktų ID priskirkite eilučių numerius naudodami eilutės_numeris() funkcija. Kadangi kiekvieną produkto ID nurodote su a pertvara funkcija, kiekvienas pasikartojantis ID turi skirtingą reikšmę.

Galiausiai filtruokite naujai sukurtą sno stulpelį paskutiniame segmente su kitu pasirinkite pareiškimas. Nustatykite šį filtrą į 1, kad gautumėte unikalias vertes galutinėje išvestyje.

Išmokite lengvai naudoti SQL

SQL ir jo variantai tapo miesto pokalbiais, turinčiais įgimtą galimybę teikti užklausas ir naudoti reliacines duomenų bazes. Nuo paprastų užklausų rašymo iki sudėtingos analizės su papildomomis užklausomis, ši kalba turi šiek tiek visko.

Tačiau prieš rašydami užklausas, turite patobulinti savo įgūdžius ir įsisavinti kodus, kad taptumėte įgudęs programuotojas. Galite smagiai išmokti SQL, pritaikydami savo žinias žaidimuose. Sužinokite keletą įmantrių kodavimo niuansų, pridėdami šiek tiek linksmybių prie savo kodo.