Если я правильно понимаю, вы ищете имена, когда частота выше, чем частота с тем же именем, что и фамилия
Это работает для имен. Вам просто нужно поменять местами фамилии
CREATE Table YourTable
(
NameType int,
name varchar(20),
FrequencyPercent decimal(12,4)
)
INSERT INTO YourTable
VALUES (1 ,'John', 3.267),
(1 , 'Thomas', 1.987),
(1 , 'Wilson', 0.945),
(2 , 'Smith', 4.528),
(2 , 'Wilson', 2.221),
(2 , 'Thomas', 0.437)
SELECT firstNames.name
FROM
YourTable firstNames
LEFT JOIN YourTable lastNames
ON firstnames.Name = lastNames.Name
AND lastNames.NameType =2
and firstnames.FrequencyPercent < lastNames.FrequencyPercent
WHERE firstNames.NameType =1
AND
lastNames.name is null
Результаты в
name
--------------------
John
Thomas
(2 row(s) affected)