Подсчитайте различные комбинации в нескольких столбцах в SQL

Podscitajte Razlicnye Kombinacii V Neskol Kih Stolbcah V Sql



При работе с базами данных SQL вы можете столкнуться с такими случаями, когда вы должны найти отдельные значения из данной таблицы и удалить повторяющиеся значения. В большинстве случаев мы в основном используем предложение different, чтобы указать столбец, значения которого мы хотим сделать уникальными.

Но что происходит, когда вы хотите убедиться, что значения из нескольких столбцов уникальны и не содержат дубликатов?







В этом руководстве мы узнаем, как использовать функции SQL для выбора двух или более столбцов и убедиться, что их значения различны.



Проблема:

Предположим, у нас есть таблица с несколькими столбцами, и мы хотим подсчитать количество различных комбинаций значений в этих столбцах.



Например, давайте рассмотрим таблицу данных о продажах со столбцами customer_id, product_id и date. Мы хотим подсчитать количество уникальных комбинаций customer_id и product_id.





Подсчитайте различные комбинации в нескольких столбцах в SQL

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

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



Мы можем лучше проиллюстрировать это, используя следующий синтаксис:

ВЫБЕРИТЕ КОЛИЧЕСТВО ( ОТЛИЧНЫЙ КОНКАТ ( столбец1, столбец2 ) )
ОТ имя_таблицы;


В этом случае столбец1 и столбец2 относятся к столбцам, которые мы хотим объединить при подсчете, а имя_таблицы относится к имени целевой таблицы.

Возьмем примерную таблицу:

СОЗДАТЬ ТАБЛИЦУ продаж (
идентификатор ВНУТРЕННИЙ ПЕРВИЧНЫЙ КЛЮЧ,
идентификатор_клиента 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 , '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' ) ;


Результирующая таблица:


Чтобы определить количество уникальных комбинаций столбцов customer_id и product_id из предыдущей таблицы, мы можем использовать следующий запрос:

ВЫБЕРИТЕ КОЛИЧЕСТВО ( ОТЛИЧНЫЙ КОНКАТ ( Пользовательский ИД, '-' , Код товара ) ) как результат
ОТ продаж;


В предыдущем запросе мы используем предложение different и функцию concat для объединения значений customer_id и product_id через дефис. Это должно создать одно значение для каждой комбинации, как показано ниже:


Отсюда мы можем использовать функцию подсчета для подсчета уникальных комбинаций из результирующей таблицы.

Заключение

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