Ребята, подскажите пожалуйста реально ли с помощью Postgresql сделать следующее.
База большая, записей прям миллиарды строк.
Есть таблицы
Table_A с полем ID,
Table_B с полями ID, Table_A_ID, external_ID
Нужно в Table_B кластеризовать все записи, где при едином Table_A_ID больше одной external_ID.
[ID],[Table_A_ID],[external_ID]
1, 23, qwe; <— интересно (несколько Table_A_ID = 23)
2, 23, xcx; <— интересно( несколько Table_A_ID = 23)
3, 3, asd; <— нет
4, 33, awd; <— нет
И дать им Cluster_ID = 1.
В следующей найденой записи, если будет пересечение хотябы с одним предыдущими найдеными external_ID, то дать им тот же Cluster_ID, что у предыдущего. Если нет пересечений то Cluster_ID++;
Спасибо за ваше время!