T-SQL Получить процент совпадений символов между 2 столбцами - PullRequest
1 голос
/ 31 мая 2019

Попытка найти процент символов, совпадающих между двумя столбцами.

Таблица A

ID  Name
1   RICK
2   PATRICK
3   MARK.HI

Таблица B

ID  Name
1   RICK
2   PATRCIK
3   MARK-HI

когда я присоединяюсь к обеим таблицам (A и B), если столбец «Имя» совпадает («RICK» в Таблице A = «RICK» в Таблице B), тогда новый столбец с именем процент должен отображаться как 100%.

Если столбец «Имя» не совпадает, когда я присоединяюсь к обеим таблицам («PATRICK» в Таблице A <> «PATRCIK» в Таблице B) он должен приблизительно показывать, в каком процентном соотношении столбец не соответствует.

Я пытаюсь выяснить беспорядочные данные.

1 Ответ

0 голосов
/ 31 мая 2019

Вопрос не слишком ясен, однако я предположил, что совпадение - это то, где имена находятся в обеих таблицах, и в одной таблице могут быть имена, которых нет в другой:

DDL

CREATE TABLE MyTab1
(
    MyVAL NVARCHAR(20)
);

INSERT INTO MyTab1 VALUES ('Rick'),('Patrick'),('John'),('Jhon');

CREATE TABLE MyTab2
(
    MyVAL NVARCHAR(20)
);

INSERT INTO MyTab2 VALUES ('Rick'),('Patrikc'),('Fred');

Запрос

DECLARE @TotalRecords DECIMAL= (
                                   SELECT COUNT(*)
                                   FROM (
                                           SELECT b.MyVal AS Val1,
                                                  a.MyVAL AS Val2
                                           FROM   MyTab1 a
                                                  FULL JOIN Mytab2 b
                                                      ON a.MyVal = b.MyVal
                                         ) a
                                 );

DECLARE @Matches DECIMAL  = (
                                 SELECT COUNT(*)
                                 FROM (
                                           SELECT b.MyVal AS Val1,
                                                  a.MyVAL AS Val2
                                           FROM   MyTab1 a
                                                  FULL JOIN Mytab2 b
                                                      ON a.MyVal = b.MyVal
                                      ) a
                                 WHERE Val1 IS NOT NULL AND Val2 IS NOT NULL
                            );

SELECT (@Matches / @TotalRecords) * 100

В этом примере возвращаемое значение составляет 16,6%, поскольку вдве таблицы, из которых 1 является общей для двух - (1/6) * 100 = 16,6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...