Tell de distinkte kombinasjonene på flere kolonner i SQL

Tell De Distinkte Kombinasjonene Pa Flere Kolonner I Sql



Når du arbeider i SQL-databaser, kan du støte på slike tilfeller der du må finne de distinkte verdiene fra en gitt tabell og fjerne de dupliserte verdiene. I de fleste tilfeller bruker vi hovedsakelig den distinkte klausulen for å spesifisere kolonnen hvis verdier er det vi ønsker skal være unike.

Men hva skjer når du vil sikre at verdiene fra flere kolonner er unike og at det ikke er duplikater?







I denne opplæringen lærer vi hvordan du bruker SQL-funksjonene til å velge to eller flere kolonner og sikre at verdiene deres er forskjellige.



Problem:

Anta at vi har en tabell med flere kolonner og vi ønsker å telle antall distinkte kombinasjoner av verdier på tvers av disse kolonnene.



La oss for eksempel vurdere en tabell med salgsdata med kolonnene kunde_id, produkt_id og dato. Vi ønsker å telle antall unike kombinasjoner av kunde_id og produkt_id.





Tell de distinkte kombinasjonene på flere kolonner i SQL

Vi kan telle antall distinkte kombinasjoner på tvers av flere kolonner ved å bruke COUNT DISTINCT-leddet og CONCAT-funksjonen i SQL.

CONCAT-funksjonen lar oss sette sammen to eller flere verdier til en enkelt verdi som vi deretter kan bruke til å sammenligne og telle.



Vi kan bedre illustrere dette ved å bruke følgende syntaks:

VELG ANTALL ( DISTINKT KONKAT ( kolonne1, kolonne2 ) )
FROM tabellnavn;


I dette tilfellet refererer kolonne1 og kolonne2 til kolonnene som vi ønsker å sette sammen mens vi teller, og tabellnavnet refererer til måltabellens navn.

La oss ta en prøvetabell:

LAG BORDsalg (
id INT PRIMÆR NØKKEL,
kunde_id INT,
product_id INT,
Dato DATO
) ;

SETTE INN I salgsverdier
( 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' ) ;


Resultattabell:


For å bestemme antall unike kombinasjoner av kunde_id- og produkt_id-kolonnene fra den forrige tabellen, kan vi bruke spørringen som følger:

VELG ANTALL ( DISTINKT KONKAT ( Kunde ID, '-' , Produkt ID ) ) som resultat
FRA salg;


I den forrige spørringen bruker vi den distinkte klausulen og concat-funksjonen for å sette sammen verdiene til customer_id og product_id med en bindestrek. Dette bør skape en enkelt verdi for hver kombinasjon som vist i følgende:


Herfra kan vi bruke tellefunksjonen til å telle de unike kombinasjonene fra den resulterende tabellen.

Konklusjon

Vi håper at denne opplæringen hjalp deg. I dette innlegget oppdaget du hvordan du kombinerer den distinkte klausulen, concat()-funksjonen og tellesetningen for å bestemme de unike verdiene fra flere SQL-tabellkolonner.