У меня в POSTGRESQL есть база данных с UUID, именем (fname) и телефоном
uuid fname phone
1 JOHN 111
2 john 111
3 John 111
4 JOHN JAMES 111
5 Charles 222
6 Peter 222
7 James 222
8 Jimmy 222
9 Fred 333
10 Fred 333
11 Greg 333
Я хотел бы сохранить только групповой телефон + имя, которое имеет сходство как минимум между двумя именами.Так, например, в этом случае я хотел бы сохранить телефон 111 и одно из имен и телефон 333, сохраняя имя, которое повторяется (Фред).Телефон 222 будет исключен, так как все имена не похожи.
Полученные данные будут
fname phone
John 111
Fred 333
Проблема, с которой я сталкиваюсь, заключается в том, что имя похожее, но у него больше имен (как у Иоанна и Джона-Джеймса или когда имя было опечатано, как у Иоанна и Иоанна).Я пытался сделать следующее
SELECT
m1.phone,
m1.fname,
m1.uuid
FROM
master as m1
JOIN master as m2 on m1.uuid = m2.uuid
WHERE
m1.phone = m2.phone
and m1.fname ILIKE m2.fname
ORDER BY 1