Att hantera dubbletter av värden i SQL kan vara en besvärlig uppgift. Men frukta inte, den här guiden är här för att lindra din börda.

Data finns i alla former och former, men duplicerade poster är en framträdande del av varje dataformat. Oavsett om du hanterar webbaserad data eller helt enkelt navigerar genom en lastbil med försäljningsdata, kommer din analys att bli skev om du har dubbletter av värden.

Använder du SQL för att krossa dina siffror och utföra långa frågor på dina datastackar? Om ja, så kommer den här guiden om att hantera SQL-dubbletter att vara en absolut fröjd för dig.

Här är några olika sätt du kan använda för att hantera dubbletter med SQL.

1. Räkna dubbletter med hjälp av grupp efter funktion

SQL är ett mångfacetterat programmeringsspråk som erbjuder olika funktioner för att förenkla beräkningar. Om du har mycket erfarenhet av aggregeringsfunktionerna i SQL kanske du redan är bekant med grupp för funktion och vad den kan användas till.

De Grupp av funktion är en av de flesta grundläggande SQL-kommandon

instagram viewer
, vilket är idealiskt för att hantera flera poster eftersom du kan använda olika aggregatfunktioner som belopp, räkna, genomsnitt, och många andra i samband med Grupp av funktion för att komma fram till ett distinkt radvis värde.

Beroende på scenariot kan du hitta dubbletter med Grupp av fungerar inom en enda kolumn och flera kolumner.

a. Räkna dubbletter i en enda kolumn

Anta att du har följande datatabell med två kolumner: Serienummer och Order.

Serienummer

Order

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

För att hitta dubbletter av produkt-ID: n kan du använda Grupp av funktion och har sats för att filtrera de aggregerade värdena, enligt följande:

Välj Serienummer, räkna(Serienummer) som Totalt antal

från sahil.product_dups

grupp efter produktid

med antal (productid) > 1

beställa efter produktid;

Som med en typisk SQL-sats måste du börja med att definiera de kolumner du vill visa i slutresultatet. I det här fallet vill vi visa antalet dubbletter av värden inom Serienummer kolumn.

I det första segmentet definierar du Serienummer kolumn inom Välj påstående. De räkna funktionen följer Serienummer referens så att SQL förstår syftet med din fråga.

Definiera sedan källtabellen med hjälp av från klausul. Eftersom räkna är en aggregeringsfunktion måste du använda Grupp av funktion för att gruppera alla liknande värden.

Kom ihåg att tanken är att lista dubblettvärdena inom Serienummer kolumn. För att göra det måste du filtrera antalet och visa värden som förekommer mer än en gång i kolumnen. De har klausul filtrerar de aggregerade data; du kan använda villkoret, dvs. antal (productid) >1, för att visa önskat resultat.

Slutligen, den sortera efter klausul sorterar de slutliga resultaten i stigande ordning.

Utgången är som följer:

b. Räkna dubbletter i flera kolumner

När du vill räkna dubbletter i flera kolumner men inte vill skriva flera SQL-frågor, kan du utöka ovanstående kod med några justeringar. Om du till exempel vill visa dubbletter av rader i flera kolumner kan du använda följande kod:

Välj produktid, beställningar, räkna(*) som Totalt antal

från sahil.product_dups

gruppera efter produktid, beställningar

med antal (productid) > 1

beställa efter produktid;

I utgången kommer du att märka att endast två rader visas. När du justerar frågan och lägger till referensen för båda kolumnerna i Välj uttalande får du ett antal matchande rader med dubbletter av värden.

Istället för räkna (kolumn) funktionen måste du klara räkna(*) funktion för att få dubbletter av rader. De * funktionen växlar mellan alla rader och letar efter dubblettrader istället för individuella dubblettvärden.

Utgången visas nedan:

Motsvarande rader med produkt-ID 14 och 47 visas eftersom ordervärdena är desamma.

2. Flagga dubbletter med row_number() funktion

Medan Grupp av och har kombination är det enklaste sättet att hitta och flagga dubbletter i en tabell, det finns ett alternativt sätt att hitta dubbletter med hjälp av rad_nummer() fungera. De rad_nummer() funktion är en del av SQL-fönsterfunktioner kategori och är avgörande för att effektivt bearbeta dina frågor.

Så här kan du flagga dubbletter med hjälp av rad_nummer() fungera:

Välj produktid, beställningar, 

row_number() over (partitionera efter produkt-id ordning efter produkt-id) som sno

från sahil.product_dups;

De rad_nummer() funktion kammar igenom varje produkt-ID-värde och assimilerar antalet återkommande för varje ID. De dela nyckelordet separerar dubblettvärdena och tilldelar värden kronologiskt, som 1, 2,3 och så vidare.

Om du inte använder dela sökord kommer du att ha ett unikt serienummer för alla produkt-ID: n, vilket inte passar ditt syfte.

De sortera efter satsen inom partitionssektionen är funktionell när man definierar sorteringsordningen. Du kan välja mellan stigande (standard) och fallande ordning.

Slutligen kan du tilldela ett alias till kolumnen för att göra det lättare att filtrera senare (om det behövs).

3. Ta bort dubbletter av rader från en SQL-tabell

Eftersom dubbletter av värden i en tabell kan förvränga din analys, är det ofta absolut nödvändigt att eliminera dem under datarensningsstadiet. SQL är ett värdefullt språk som erbjuder sätt att spåra och radera dina dubbletter av värden effektivt.

a. Använder det distinkta nyckelordet

De distinkt nyckelord är förmodligen den vanligaste och mest använda SQL-funktionen för att ta bort dubbletter av värden i en tabell. Du kan ta bort dubbletter från en enda kolumn eller till och med duplicera rader på en gång.

Så här kan du ta bort dubbletter från en enda kolumn:

Väljdistinkt Serienummer från sahil.product_dups;

Utdata returnerar en lista över alla unika produkt-ID: n från tabellen.

För att ta bort dubbletter av rader kan du justera ovanstående kod enligt följande:

Väljdistinkt * från sahil.product_dups;

Utdata returnerar en lista över alla unika rader från tabellen. När du tittar på resultatet kommer du att märka att produkt-ID 14 och 47 endast visas en gång i den slutliga resultattabellen.

b. Använder metoden Common Table Expression (CTE).

Metoden Common Table Expression (CTE) skiljer sig något från den vanliga SQL-koden. CTE liknar SQLs temporära tabeller, med den enda skillnaden att de är virtuella, vilket du endast kan referera till när frågan körs.

Den största fördelen är att du inte behöver skicka en separat fråga för att släppa dessa tabeller senare, eftersom de upphör att existera så fort frågan körs. Med CTE-metoden kan du använda koden nedan för att hitta och ta bort dubbletter.

med cteprodukter som

(Välj produktid, beställningar,

row_number() over (partitionera efter produkt-id ordning efter produkt-id) som sno

från sahil.product_dups)

Välj * från cteprodukter

där sno = 1;

Du kan anropa CTE-funktionen med hjälp av med nyckelord; definiera namnet på den temporära virtuella tabellen efter med nyckelord. CTE-tabellreferensen är användbar när du filtrerar tabellens värden.

I nästa del, tilldela radnummer till dina produkt-ID: n med hjälp av rad_nummer() fungera. Eftersom du refererar till varje produkt-ID med ett dela funktion har varje återkommande ID ett distinkt värde.

Filtrera slutligen det nyskapade sno kolumn i det sista segmentet med en annan Välj påstående. Ställ in detta filter på 1 för att få unika värden i den slutliga utmatningen.

Lär dig att använda SQL på ett enkelt sätt

SQL och dess varianter har blivit samtalsämne, med dess medfödda förmåga att fråga och använda relationsdatabaser. Från att skriva enkla frågor till att utföra utarbetade analyser med underfrågor, detta språk har lite av allt.

Innan du skriver några frågor måste du dock finslipa dina kunskaper och börja knäcka med koderna för att göra dig själv till en skicklig kodare. Du kan lära dig SQL på ett roligt sätt genom att implementera dina kunskaper i spel. Lär dig några snygga kodningsnyanser genom att lägga till lite kul till din kod.