Å håndtere dupliserte verdier i SQL kan være en tungvint oppgave. Men frykt ikke, denne veiledningen er her for å lette byrden din.
Data kommer i alle former og former, men dupliserte poster er en fremtredende del av hvert dataformat. Enten du arbeider med nettbaserte data eller bare navigerer gjennom en lastebil med salgsdata, vil analysen din bli skjev hvis du har dupliserte verdier.
Bruker du SQL til å knuse tallene dine og utføre lange spørringer på datastabler? Hvis ja, vil denne veiledningen for administrasjon av SQL-duplikater være en absolutt glede for deg.
Her er noen forskjellige måter du kan bruke for å administrere duplikater ved hjelp av SQL.
1. Telle duplikater ved å bruke grupper etter funksjon
SQL er et mangefasettert programmeringsspråk som tilbyr ulike funksjoner for å forenkle beregninger. Hvis du har mye erfaring med aggregeringsfunksjonene i SQL, er du kanskje allerede kjent med gruppe etter funksjon og hva den kan brukes til.
De gruppe av funksjonen er en av mest grunnleggende SQL-kommandoer
, som er ideell for å håndtere flere poster siden du kan bruke forskjellige aggregerte funksjoner som sum, telle, gjennomsnitt, og mange andre i forbindelse med gruppe av funksjon for å komme frem til en distinkt radvis verdi.Avhengig av scenariet kan du finne duplikater med gruppe av funksjon i en enkelt kolonne og flere kolonner.
en. Tell duplikater i en enkelt kolonne
Anta at du har følgende datatabell med to kolonner: Produkt ID og Bestillinger.
Produkt ID |
Bestillinger |
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 |
For å finne dupliserte produkt-ID-er kan du bruke gruppe av funksjon og å ha klausul for å filtrere de aggregerte verdiene, som følger:
plukke ut Produkt ID, telle(Produkt ID) som Total_antall
fra sahil.product_dups
gruppe etter produktid
har antall (productid) > 1
bestill etter produktid;
Som med en typisk SQL-setning, må du starte med å definere kolonnene du vil vise i sluttresultatet. I dette tilfellet ønsker vi å vise antall dupliserte verdier innenfor Produkt ID kolonne.
I det første segmentet, definer Produkt ID kolonne i plukke ut uttalelse. De telle funksjonen følger Produkt ID referanse slik at SQL forstår formålet med spørringen.
Deretter definerer du kildetabellen ved å bruke fra klausul. Siden telle er en aggregeringsfunksjon, må du bruke gruppe av funksjon for å gruppere alle lignende verdier.
Husk at ideen er å liste dupliserte verdier i Produkt ID kolonne. For å gjøre det, må du filtrere antallet og vise verdiene som forekommer mer enn én gang i kolonnen. De å ha klausul filtrerer de aggregerte dataene; du kan bruke betingelsen, dvs. count (productid) >1, for å vise de ønskede resultatene.
Til slutt, den rekkefølge etter klausulen sorterer de endelige resultatene i stigende rekkefølge.
Utgangen er som følger:
b. Tell duplikater i flere kolonner
Når du vil telle duplikater i flere kolonner, men ikke vil skrive flere SQL-spørringer, kan du utvide koden ovenfor med noen få justeringer. Hvis du for eksempel vil vise dupliserte rader i flere kolonner, kan du bruke følgende kode:
plukke ut produktid, bestillinger, telle(*) som Total_antall
fra sahil.product_dups
grupper etter produktid, bestillinger
har antall (productid) > 1
bestill etter produktid;
I utgangen vil du legge merke til at bare to rader vises. Når du justerer søket og legger til referansen til begge kolonnene i plukke ut setning, får du et antall samsvarende rader med dupliserte verdier.
I stedet for telle (kolonne) funksjonen må du bestå telle(*) funksjon for å få dupliserte rader. De * funksjonen veksler mellom alle rader og ser etter dupliserte rader i stedet for individuelle dupliserte verdier.
Utgangen er vist nedenfor:
De tilsvarende radene med produkt-ID 14 og 47 vises siden ordreverdiene er de samme.
2. Flagging av duplikater med row_number() funksjon
Mens gruppe av og å ha kombinasjon er den enkleste måten å finne og flagge duplikater i en tabell, det er en alternativ måte å finne duplikater ved å bruke rad_nummer() funksjon. De rad_nummer() funksjonen er en del av SQL-vindusfunksjoner kategori og er avgjørende for effektiv behandling av forespørslene dine.
Slik kan du flagge duplikater ved å bruke rad_nummer() funksjon:
plukke ut produktid, bestillinger,
row_number() over (partisjon etter produkt-id rekkefølge etter produkt-id) som sno
fra sahil.product_dups;
De rad_nummer() funksjonen gr gjennom hver produkt-ID-verdi og assimilerer antall gjentakelser for hver ID. De skillevegg nøkkelordet skiller de dupliserte verdiene og tildeler verdier kronologisk, som 1, 2,3 og så videre.
Hvis du ikke bruker skillevegg søkeord, vil du ha et unikt serienummer for alle produkt-ID-ene, som ikke passer til formålet ditt.
De rekkefølge etter klausulen i partisjonsdelen er funksjonell når sorteringsrekkefølgen defineres. Du kan velge mellom stigende (standard) og synkende rekkefølge.
Til slutt kan du tilordne et alias til kolonnen for å gjøre det enklere å filtrere senere (hvis nødvendig).
3. Slette dupliserte rader fra en SQL-tabell
Siden dupliserte verdier i en tabell kan skjeve analysen din, er det ofte avgjørende å eliminere dem under datarensing. SQL er et verdifullt språk som tilbyr måter å spore og slette dupliserte verdier på effektivt.
en. Bruke det distinkte søkeordet
De distinkt nøkkelord er sannsynligvis den vanligste og mest brukte SQL-funksjonen for å fjerne dupliserte verdier i en tabell. Du kan fjerne duplikater fra en enkelt kolonne eller til og med dupliserte rader på én gang.
Slik kan du fjerne duplikater fra en enkelt kolonne:
plukke utdistinkt Produkt ID fra sahil.product_dups;
Utdataene returnerer en liste over alle unike produkt-ID-er fra tabellen.
For å fjerne dupliserte rader, kan du justere koden ovenfor som følger:
plukke utdistinkt * fra sahil.product_dups;
Utdataene returnerer en liste over alle unike rader fra tabellen. Når du ser på utdataene, vil du legge merke til at produkt-ID-ene 14 og 47 bare vises én gang i den endelige resultattabellen.
b. Bruke metoden Common Table Expression (CTE).
Common Table Expression (CTE)-metoden skiller seg litt fra den vanlige SQL-koden. CTE-er ligner på SQLs midlertidige tabeller, med den eneste forskjellen at de er virtuelle, som du kun kan referere til under kjøringen av spørringen.
Den største fordelen er at du ikke trenger å sende en separat spørring for å slippe disse tabellene senere, siden de slutter å eksistere så snart spørringen kjøres. Ved å bruke CTE-metoden kan du bruke koden nedenfor for å finne og slette duplikater.
med cteprodukter som
(plukke ut produktid, bestillinger,
row_number() over (partisjon etter produkt-id rekkefølge etter produkt-id) som sno
fra sahil.product_dups)
plukke ut * fra cteprodukter
hvor sno = 1;
Du kan aktivere CTE-funksjonen ved å bruke med nøkkelord; definer navnet på den midlertidige virtuelle tabellen etter med nøkkelord. CTE-tabellreferansen er nyttig når du filtrerer tabellens verdier.
I neste del tildeler du radnummer til produkt-ID-ene dine ved å bruke rad_nummer() funksjon. Siden du refererer til hver produkt-ID med en skillevegg funksjon, har hver gjentakende ID en distinkt verdi.
Til slutt filtrerer du det nyopprettede sno kolonne i det siste segmentet med en annen plukke ut uttalelse. Sett dette filteret til 1 for å få unike verdier i den endelige utgangen.
Lær å bruke SQL på den enkle måten
SQL og dens varianter har blitt snakk om byen, med sin medfødte evne til å spørre og bruke relasjonsdatabaser. Fra å skrive enkle spørringer til å utføre forseggjorte analyser med underspørringer, dette språket har litt av hvert.
Men før du skriver noen spørsmål, må du finpusse ferdighetene dine og komme i gang med kodene for å gjøre deg selv til en dyktig koder. Du kan lære SQL på en morsom måte ved å implementere kunnskapen din i spill. Lær noen fancy kodingsnyanser ved å legge til litt moro i koden din.