У меня есть таблица, в которой есть записи, которые содержат информацию о людях и имя файла, из которого эта информация была получена, поэтому таблица выглядит так:
|Table|
|id, first-name, last-name, ssn, filename|
У меня также есть хранимая процедура, которая обеспечивает некоторую аналитикудля файлов в системе, и я пытаюсь добавить информацию к этой хранимой процедуре, чтобы пролить свет на возможность дублирования.
Вот текущая хранимая процедура
SELECT [filename],
COUNT([filename]) as totalRecords,
COUNT(closedleads.id) as closedRecords,
ROUND(--calcs percent of records closed in a file)
FROM table
LEFT OUTER JOIN closedleads ON closedleads.leadid = table.id
GROUP BY [filename]
Что яхочу добавить - это возможность увидеть, возможно, # возможных дубликатов, определенных как записи с совпадающими номерами SSN, и я затрудняюсь с тем, как я могу выполнить подсчет для подзапроса или объединения и включить его в набор результатов.Кто-нибудь может предоставить несколько указателей?
Я пытаюсь добавить что-то подобное в мою процедуру выше
SELECT COUNT(
SELECT COUNT(*) FROM Table T1
INNER JOIN Table T2 on T1.SSN = T2.SSN
WHERE T1.id != T2.id
) as PossibleDuplicates
Я ищу объединение этого кода с моей процедурой.выше, так что я могу получить все те же данные в одном и, возможно, иметь это количество дубликатов по каждому имени файла, поэтому для каждого имени файла я получаю результат # записей, количество закрытых записей и # возможных дубликатов
РЕДАКТИРОВАТЬ:
Я очень близок к желаемой цели, но мне не удается в последний раз - получить количество возможных дубликатов по имени файла, вот мой запрос
select [q1].[filename], [q1].leads, [q1].closed, [q2].dups
FROM (
SELECT [filename], count([filename]) as leads,
count(closedleads.id) as closed
FROM Table
left join closedleads on closedleads.leadid = Table.id
group by [filename]
) as [q1]
INNER JOIN (
select count([ssn]) as dups, [filename] from Table
group by [ssn], [filename]
having count([ssn]) > 1
) as [q2] on [q1].[filename] = [q2].[filename]
Это работает, но показывает несколько результатов для каждого имени файла со значениями 2-5 вместо суммирования общего количества возможных дубликатов
Рабочий запрос
Всем привет, спасибо за помощь,в конце концов это то, что я получил, чтобы это работало именно так, как я хотел
select [q1].[filename], [q1].leads, [q1].closed, [q2].dups,
round(([q1].closed / [q1].leads), 3) as percentClosed
FROM (
SELECT [filename], count([filename]) as leads,
count(closedleads.id) as closed
FROM Table
left join closedleads on closedleads.leadid = Table.id
and [filename] is not null
group by [filename]
) as [q1]
INNER JOIN (
select [filename], count(*) - count(distinct [ssn]) as dups
from Table
group by [filename]
) as [q2] on [q1].[filename] = [q2].[filename]