Пребройте отделните комбинации в множество колони в SQL

Prebrojte Otdelnite Kombinacii V Mnozestvo Koloni V Sql



Когато работите в SQL бази данни, може да срещнете такива случаи, когато трябва да намерите отделните стойности от дадена таблица и да премахнете дублиращите се стойности. В повечето случаи използваме основно клаузата distinct, за да посочим колоната, чиито стойности са това, което искаме да бъде уникално.

Но какво се случва, когато искате да сте сигурни, че стойностите от множество колони са уникални и няма дубликати?







В този урок ще научим как да използваме функциите на SQL, за да изберете две или повече колони и да гарантираме, че техните стойности са различни.



проблем:

Да предположим, че имаме таблица с множество колони и искаме да преброим броя на отделните комбинации от стойности в тези колони.



Например, нека разгледаме таблица с данни за продажбите с customer_id, product_id и колони за дата. Искаме да преброим броя на уникалните комбинации от customer_id и product_id.





Пребройте отделните комбинации в множество колони в SQL

Можем да преброим броя на отделните комбинации в множество колони, като използваме клаузата COUNT DISTINCT и функцията CONCAT в SQL.

Функцията CONCAT ни позволява да свържем две или повече стойности в една стойност, която след това можем да използваме за сравнение и преброяване.



Можем да илюстрираме това по-добре, като използваме следния синтаксис:

ИЗБЕРЕТЕ БРОЯ ( DISTINCT CONCAT ( колона1, колона2 ) )
ОТ име_на_таблица;


В този случай колона1 и колона2 се отнасят до колоните, които искаме да свържем, докато броим, а table_name се отнася до името на целевата таблица.

Нека вземем примерна таблица:

СЪЗДАВАНЕ НА ТАБЛИЦА продажби (
документ за самоличност INT ПЪРВИЧЕН КЛЮЧ,
customer_id INT,
product_id INT,
дата ДАТА
) ;

ВМЪКНЕТЕ В СТОЙНОСТИ за продажби
( 1 , 100 , 1 , '2023-05-01' ) ,
( 2 , 101 , 1 , '2023-05-02' ) ,
( 3 , 100 , 2 , '2023-05-02' ) ,
( 4 , 102 , 3 , „03.05.2023 г.“ ) ,
( 5 , 101 , 2 , „03.05.2023 г.“ ) ,
( 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 , „06.05.2023“ ) ;


Резултатна таблица:


За да определим броя на уникалните комбинации от колоните customer_id и product_id от предишната таблица, можем да използваме заявката, както следва:

ИЗБЕРЕТЕ БРОЯ ( DISTINCT CONCAT ( Клиентски номер, '-' , идентификация на продукта ) ) като резултат
ОТ продажби;


В предишната заявка използваме клаузата distinct и функцията concat, за да свържем стойностите на customer_id и product_id с тире. Това трябва да създаде една стойност за всяка комбинация, както е показано по-долу:


От тук можем да използваме функцията за преброяване, за да преброим уникалните комбинации от получената таблица.

Заключение

Надяваме се, че този урок ви е помогнал. В тази публикация открихте как да комбинирате клаузата distinct, функцията concat() и клаузата count, за да определите уникалните стойности от множество колони на SQL таблица.