2013-12-12 5 views
1

У меня есть базовая база данных Oracle с двумя таблицами. Мне нужно создать запрос, который будет пытаться сопоставить записи однозначно, используя простую проверку first_name/last_name/address. Что мне нужно от этого какого процента записей из таблицы А, в таблице В.SQL для поиска совпадений строк и вычисления процента

Так что у меня есть что-то очень простое, как это на данный момент:

SELECT First_Name, Family_Name FROM table_b 
MINUS 
SELECT First_Name, Family_Name FROM table_a; 

Может кто-нибудь посоветовать лучший путь к разработать/изменить это для достижения желаемого результата? Спасибо!

+0

Не могли бы вы привести пример и желаемый результат? Я не уверен, какой результат должен быть для вашего соответствия записей. –

+0

Процент записей в одной таблице, которые также находятся в другой таблице. – GrumP

ответ

1

Вы можете использовать JOIN и среднее количество совпадений, чтобы получить процент;

SELECT 100*AVG(CASE WHEN table_b.First_Name IS NULL THEN 0 ELSE 1 END) percent 
FROM table_a 
LEFT JOIN table_b 
    ON table_a.First_Name = table_b.First_Name 
AND table_a.Family_Name = table_b.Family_Name 

An SQLfiddle to test with.

Обратите внимание, что если есть дубликаты, счетчик может быть выключен.

+0

Отлично, спасибо! «если есть дубликаты, счет может быть выключен», есть ли способ обхода? Например, способ перечислить дубликаты и записи, которые не могут быть разрешены? (совпадения имен, но адреса не совпадают) – GrumP

Смежные вопросы