Tæl de forskellige kombinationer på flere kolonner i SQL

Tael De Forskellige Kombinationer Pa Flere Kolonner I Sql



Når du arbejder i SQL-databaser, kan du støde på sådanne tilfælde, hvor du skal finde de forskellige værdier fra en given tabel og fjerne de duplikerede værdier. I de fleste tilfælde bruger vi hovedsageligt den distinkte klausul til at angive den kolonne, hvis værdier er, hvad vi ønsker at være unikke.

Men hvad sker der, når du vil sikre dig, at værdierne fra flere kolonner er unikke, og der ikke er dubletter?







I denne øvelse lærer vi, hvordan du bruger SQL-funktionerne til at vælge to eller flere kolonner og sikre, at deres værdier er forskellige.



Problem:

Antag, at vi har en tabel med flere kolonner, og vi ønsker at tælle antallet af forskellige kombinationer af værdier på tværs af disse kolonner.



Lad os f.eks. overveje en tabel med salgsdata med kolonnerne kunde_id, produkt_id og dato. Vi ønsker at tælle antallet af unikke kombinationer af kunde_id og produkt_id.





Tæl de forskellige kombinationer på flere kolonner i SQL

Vi kan tælle antallet af distinkte kombinationer på tværs af flere kolonner ved hjælp af COUNT DISTINCT-sætningen og CONCAT-funktionen i SQL.

CONCAT-funktionen giver os mulighed for at sammenkæde to eller flere værdier til en enkelt værdi, som vi derefter kan bruge til at sammenligne og tælle.



Vi kan bedre illustrere dette ved at bruge følgende syntaks:

VÆLG ANTAL ( DISTINKT KONCAT ( kolonne 1, kolonne 2 ) )
FRA tabelnavn;


I dette tilfælde refererer kolonne1 og kolonne2 til de kolonner, som vi ønsker at sammenkæde, mens vi tæller, og tabelnavnet henviser til måltabellens navn.

Lad os tage et eksempel på en tabel:

OPRET TABELsalg (
id INT PRIMÆR NØGLE,
kunde_id INT,
produkt-id INT,
dato DATO
) ;

INDSÆT I salgsværdier
( 1 , 100 , 1 , '2023-05-01' ) ,
( 2 , 101 , 1 , '2023-05-02' ) ,
( 3 , 100 , 2 , '2023-05-02' ) ,
( 4 , 102 , 3 , '2023-05-03' ) ,
( 5 , 101 , 2 , '2023-05-03' ) ,
( 6 , 103 , 2 , '2023-05-04' ) ,
( 7 , 100 , 3 , '2023-05-04' ) ,
( 8 , 102 , 1 , '2023-05-05' ) ,
( 9 , 101 , 3 , '2023-05-05' ) ,
( 10 , 103 , 1 , '2023-05-06' ) ;


Resultattabel:


For at bestemme antallet af unikke kombinationer af kolonnerne kunde_id og produkt_id fra den foregående tabel, kan vi bruge forespørgslen som følger:

VÆLG ANTAL ( DISTINKT KONCAT ( Kunde ID, '-' , produkt-id ) ) som resultat
FRA salg;


I den forrige forespørgsel bruger vi distinct-sætningen og concat-funktionen til at sammenkæde værdierne af customer_id og product_id med en bindestreg. Dette skulle skabe en enkelt værdi for hver kombination som vist i følgende:


Herfra kan vi bruge tællefunktionen til at tælle de unikke kombinationer fra den resulterende tabel.

Konklusion

Vi håber, at denne tutorial hjalp dig. I dette indlæg opdagede du, hvordan du kombinerer den distinkte klausul, concat()-funktionen og tællesætningen for at bestemme de unikke værdier fra flere SQL-tabelkolonner.