Contare le combinazioni distinte su più colonne in SQL

Contare Le Combinazioni Distinte Su Piu Colonne In Sql



Quando si lavora nei database SQL, è possibile riscontrare tali casi in cui è necessario trovare i valori distinti da una determinata tabella e rimuovere i valori duplicati. Nella maggior parte dei casi, utilizziamo principalmente la clausola distinta per specificare la colonna i cui valori sono ciò che desideriamo sia univoco.

Ma cosa succede quando vuoi assicurarti che i valori di più colonne siano univoci e non ci siano duplicati?







In questo tutorial impareremo come utilizzare le funzionalità SQL per selezionare due o più colonne e assicurarci che i loro valori siano distinti.



Problema:

Supponiamo di avere una tabella con più colonne e di voler contare il numero di combinazioni distinte di valori in queste colonne.



Ad esempio, consideriamo una tabella di dati di vendita con le colonne customer_id, product_id e date. Vogliamo contare il numero di combinazioni univoche di customer_id e product_id.





Contare le combinazioni distinte su più colonne in SQL

Possiamo contare il numero di combinazioni distinte su più colonne utilizzando la clausola COUNT DISTINCT e la funzione CONCAT in SQL.

La funzione CONCAT ci consente di concatenare due o più valori in un unico valore che possiamo quindi utilizzare per confrontare e contare.



Possiamo illustrare meglio questo utilizzando la seguente sintassi:

SELEZIONA CONTEGGIO ( CONCAT DISTINTA ( colonna1, colonna2 ) )
FROM nome_tabella;


In questo caso, column1 e column2 si riferiscono alle colonne che desideriamo concatenare durante il conteggio e table_name si riferisce al nome della tabella di destinazione.

Prendiamo una tabella di esempio:

CREA TABELLA vendite (
id INT CHIAVE PRIMARIA,
ID_cliente INT,
id_prodotto INT,
data DATA
) ;

INSERIRE NEI VALORI DI VENDITA
( 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' ) ;


Tabella risultante:


Per determinare il numero di combinazioni univoche delle colonne customer_id e product_id della tabella precedente, possiamo utilizzare la query come segue:

SELEZIONA CONTEGGIO ( CONCAT DISTINTA ( identificativo del cliente, '-' , Codice prodotto ) ) COME risultato
DALLE vendite;


Nella query precedente, usiamo la clausola distinta e la funzione concat per concatenare i valori di customer_id e product_id con un trattino. Questo dovrebbe creare un singolo valore per ogni combinazione come mostrato di seguito:


Da qui, possiamo usare la funzione count per contare le combinazioni univoche dalla tabella risultante.

Conclusione

Speriamo che questo tutorial ti abbia aiutato. In questo post, hai scoperto come combinare la clausola distinta, la funzione concat() e la clausola count per determinare i valori univoci da più colonne della tabella SQL.