Omgaan met dubbele waarden in SQL kan een omslachtige taak zijn. Maar vrees niet, deze gids is hier om uw last te verlichten.

Gegevens zijn er in alle soorten en maten, maar dubbele records vormen een prominent onderdeel van elk gegevensformaat. Of u nu te maken heeft met webgebaseerde gegevens of gewoon door een vrachtwagen vol verkoopgegevens navigeert, uw analyse wordt scheef als u dubbele waarden heeft.

Gebruikt u SQL om uw cijfers te kraken en lange query's uit te voeren op uw gegevensstapels? Zo ja, dan zal deze gids over het beheren van SQL-duplicaten een absoluut genot voor u zijn.

Hier zijn een paar verschillende manieren waarop u duplicaten kunt beheren met behulp van SQL.

1. Duplicaten tellen met behulp van groeperen op functie

SQL is een veelzijdige programmeertaal die verschillende functies biedt om berekeningen te vereenvoudigen. Als je veel ervaring hebt met de aggregatiefuncties in SQL, ben je misschien al bekend met de groeperen op functie en waar het voor kan worden gebruikt.

instagram viewer

De groeperen op functie is een van de meest elementaire SQL-commando's, wat ideaal is voor het omgaan met meerdere records, aangezien u verschillende aggregatiefuncties kunt gebruiken, zoals som, graaf, gemiddeld, en vele anderen in samenwerking met de groeperen op functie om tot een afzonderlijke rij-gewijze waarde te komen.

Afhankelijk van het scenario kunt u duplicaten vinden met de groeperen op functie binnen een enkele kolom en meerdere kolommen.

A. Tel duplicaten in een enkele kolom

Stel dat u de volgende gegevenstabel met twee kolommen hebt: Product-ID En Bestellingen.

Product-ID

Bestellingen

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

Om dubbele product-ID's te vinden, kunt u de groeperen op functie en de hebben clausule om de geaggregeerde waarden als volgt te filteren:

selecteren Product-ID, graaf(Product-ID) als Totaal

van sahil.product_dups

groeperen op product-id

met telling (productid) > 1

bestellen op productnummer;

Net als bij een typische SQL-instructie, moet u beginnen met het definiëren van de kolommen die u in het eindresultaat wilt weergeven. In dit geval willen we het aantal dubbele waarden binnen het Product-ID kolom.

Definieer in het eerste segment de Product-ID kolom binnen de selecteren stelling. De graaf functie volgt de Product-ID referentie zodat SQL het doel van uw query begrijpt.

Definieer vervolgens de brontabel met behulp van de van clausule. Sinds graaf is een aggregatiefunctie, moet u de groeperen op functie om alle vergelijkbare waarden te groeperen.

Onthoud dat het de bedoeling is om de dubbele waarden binnen de Product-ID kolom. Om dit te doen, moet u de telling filteren en waarden weergeven die meer dan eens in de kolom voorkomen. De hebben clausule filtert de geaggregeerde gegevens; u kunt de voorwaarde gebruiken, d.w.z. aantal (productid) >1, om de gewenste resultaten weer te geven.

eindelijk, de bestellen door clausule sorteert de uiteindelijke resultaten in oplopende volgorde.

De uitvoer is als volgt:

B. Tel duplicaten in meerdere kolommen

Als u duplicaten in meerdere kolommen wilt tellen, maar niet meerdere SQL-query's wilt schrijven, kunt u de bovenstaande code met een paar aanpassingen uitbreiden. Als u bijvoorbeeld dubbele rijen in meerdere kolommen wilt weergeven, kunt u de volgende code gebruiken:

selecteren productid, bestellingen, graaf(*) als Totaal

van sahil.product_dups

groeperen op product-id, bestellingen

met telling (productid) > 1

bestellen op productnummer;

In de uitvoer zult u merken dat er slechts twee rijen worden weergegeven. Wanneer u de query aanpast en de referentie van beide kolommen toevoegt binnen de selecteren instructie, krijgt u een telling van overeenkomende rijen met dubbele waarden.

In plaats van de tellen (kolom) functie, moet u de graaf(*) functie om dubbele rijen te krijgen. De * functie schakelt door alle rijen en zoekt naar dubbele rijen in plaats van individuele dubbele waarden.

De uitvoer wordt hieronder weergegeven:

De overeenkomstige rijen met product-ID 14 en 47 worden weergegeven omdat de bestelwaarden hetzelfde zijn.

2. Duplicaten markeren met de functie row_number().

Terwijl de groeperen op En hebben combinatie de eenvoudigste manier is om duplicaten binnen een tabel te vinden en te markeren, is er een alternatieve manier om duplicaten te vinden met behulp van de rij nummer() functie. De rij nummer() functie is een onderdeel van de SQL-vensterfuncties categorie en is essentieel voor het efficiënt verwerken van uw vragen.

Hier leest u hoe u duplicaten kunt markeren met behulp van de rij nummer() functie:

selecteren productid, bestellingen, 

row_number() over (partitie op product-ID volgorde op product-ID) als sno

van sahil.product_dups;

De rij nummer() functie doorzoekt elke product-ID-waarde en assimileert het aantal herhalingen voor elke ID. De partitie trefwoord scheidt de dubbele waarden en wijst waarden chronologisch toe, zoals 1, 2,3, enzovoort.

Als u geen gebruik maakt van de partitie trefwoord, hebt u een uniek serienummer voor alle product-ID's, wat niet geschikt is voor uw doel.

De bestellen door clausule binnen de partitiesectie is functioneel bij het definiëren van de sorteervolgorde. U kunt kiezen tussen oplopende (standaard) en aflopende volgorde.

Ten slotte kunt u een alias aan de kolom toewijzen om later gemakkelijker te kunnen filteren (indien nodig).

3. Dubbele rijen verwijderen uit een SQL-tabel

Aangezien dubbele waarden in een tabel uw analyse kunnen vertekenen, is het vaak noodzakelijk om ze tijdens de fase van gegevensopschoning te verwijderen. SQL is een waardevolle taal die manieren biedt om uw dubbele waarden efficiënt op te sporen en te verwijderen.

A. Het onderscheidende trefwoord gebruiken

De verschillend keyword is waarschijnlijk de meest voorkomende en meest gebruikte SQL-functie om dubbele waarden in een tabel te verwijderen. U kunt duplicaten uit een enkele kolom of zelfs dubbele rijen in één keer verwijderen.

Zo kunt u duplicaten uit een enkele kolom verwijderen:

selecterenverschillend Product-ID van sahil.product_dups;

De uitvoer retourneert een lijst met alle unieke product-ID's uit de tabel.

Om dubbele rijen te verwijderen, kunt u de bovenstaande code als volgt aanpassen:

selecterenverschillend * van sahil.product_dups;

De uitvoer retourneert een lijst met alle unieke rijen uit de tabel. Als u naar de uitvoer kijkt, ziet u dat product-ID's 14 en 47 slechts één keer voorkomen in de uiteindelijke resultatentabel.

B. De Common Table Expression (CTE)-methode gebruiken

De methode Common Table Expression (CTE) verschilt enigszins van de reguliere SQL-code. CTE's zijn vergelijkbaar met SQL's tijdelijke tabellen, met als enige verschil dat ze virtueel zijn, waarnaar u alleen kunt verwijzen tijdens de uitvoering van de query.

Het grootste voordeel is dat u geen aparte query hoeft door te geven om deze tabellen later te verwijderen, aangezien ze ophouden te bestaan ​​zodra de query wordt uitgevoerd. Met behulp van de CTE-methode kunt u de onderstaande code gebruiken om duplicaten te vinden en te verwijderen.

met cteproducten als

(selecteren productid, bestellingen,

row_number() over (partitie op product-ID volgorde op product-ID) als sno

van sahil.product_dups)

selecteren * van cteproducten

waar sno = 1;

U kunt de CTE-functie aanroepen met behulp van de met trefwoord; definieer de naam van de tijdelijke virtuele tabel na de met trefwoord. De verwijzing naar de CTE-tabel is handig bij het filteren van de waarden van de tabel.

Wijs in het volgende deel rijnummers toe aan uw product-ID's met behulp van de rij nummer() functie. Aangezien u naar elke product-ID verwijst met een partitie functie heeft elke terugkerende ID een afzonderlijke waarde.

Filter ten slotte het nieuw gemaakte sno kolom in het laatste segment met een andere selecteren stelling. Stel dit filter in op 1 om unieke waarden in de uiteindelijke uitvoer te verkrijgen.

Leer SQL op de gemakkelijke manier te gebruiken

SQL en zijn varianten zijn het gesprek van de dag geworden, met zijn aangeboren vermogen om relationele databases te doorzoeken en te gebruiken. Van het schrijven van simpele queries tot het uitvoeren van uitgebreide analyses met subquery's, deze taal heeft van alles een beetje.

Voordat u echter vragen schrijft, moet u uw vaardigheden aanscherpen en aan de slag gaan met de codes om van uzelf een bedreven codeur te maken. Je kunt SQL op een leuke manier leren door je kennis in games te implementeren. Leer een aantal mooie coderingsnuances door een beetje plezier aan uw code toe te voegen.