2014-08-27 2 views
0

У меня есть таблица со списком FQDN, например:Группировка по кратчайшему общему суффиксу в данных

www.bbc.co.uk 
bbc.co.uk 
bbc.com 
www.bbc.com 
www.live.bbc.co.uk 
www.live.bbc.com 

Я хотел бы объединить эти по доменному имени; а не точное полное доменное имя, но самое короткое совпадающее доменное имя, существующее в данных. Например, в приведенном выше примере, я хотел бы, чтобы группа

www.bbc.co.uk 
bbc.co.uk 
www.live.bbc.co.uk 

вместе, так как они имеют общий «суффикс» из bbc.co.uk.

Тот факт, что это доменные имена, вероятно, не имеет отношения к делу, но может также сыграть определенную роль в решении. Может ли кто-нибудь предложить способ объединения данных с помощью кратчайшего общего суффикса?

EDIT: в соответствии с просьбой, как выход, я бы идеально, как что-то вроде:

Domain  Count 
bbc.co.uk 3 
bbc.com  3 
+0

Почему bbc.com не в выходе? Почему bbc.co.uk и live.bbc.co.uk разные? Что вы используете для определения «суффикса»? Возможно, вы сможете использовать PARSENAME, но ваш вопрос достаточно неясен, чтобы не дать много помощи. –

+0

Нет «выхода» выше; три строки 'bbc.co.uk' в качестве примера данных, которые я бы хотел сгруппировать. Под «суффиксом» я подразумеваю правую часть строки: в приведенном выше примере все, что заканчивается 'bbc.co.uk', должно быть сгруппировано вместе, как и что-либо, заканчивающееся' bbc.com'. – KenD

+0

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

ответ

0

Я сумел чинить свой путь вокруг проблемы: Я ввел временное поле «MasterDomainName» в базу данных, и я обновил его с:

UPDATE r1 
SET r1.MasterDomainName= r2.domainname 
FROM @results r1 
LEFT JOIN @results r2 
ON r2.domainname = right(r1.domainname,len(r2.domainname)) 

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

1

Если вы не знаете, сколько суффикс добавить в вашей группировки, это будет трудно.

Возможно, вы можете попробовать сгруппировать по последнему суффиксу (после последней точки). Затем, если вы получили результат, добавьте следующий суффикс и группу. Тогда, если вы получили результат, добавить еще один ...

0

Вы можете получить такое же количество точек если вы сначала преобразовать тип домена в IP-адрес с помощью Nslookup. Link

В качестве альтернативы существуют целые базы данных со списком известных доменных имен. Link2

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