Я думаю, что нашел выход. Я использовал другой столбец, который является club_id
, частью которого являются клиенты. В этом случае все клиенты 1, 2 и 3 являются, например, частью club_id
1.
Вот мой код с использованием ClickHouse SQL и с учетом того, что input_table
является таблицей данные, как показано в вопросе:
SELECT club_id, arrayConcat( clt_a, clt_b ) as tot_clt_arr, arrayUniq( arrayConcat( clt_a, clt_b ) ) as tot_clt
FROM
(
SELECT club_id, clt_a
FROM
(
SELECT club_id, link_hash_a, groupUniqArray(client_id) as clt_a
FROM input_table
GROUP BY club_id, link_hash_a
)
WHERE length(clt_a) >= 2
) JOIN
(
SELECT club_id, clt_b
FROM
(
SELECT club_id, link_hash_b, groupUniqArray(client_id) as clt_b
FROM input_table
GROUP BY club_id, link_hash_b
)
WHERE length(clt_b) >= 2
)
USING club_id
GROUP BY club_id, tot_clt_arr;
Возвращает массив client_id
, а также номер уникального client_id
в столбце tot_clt
.
Спасибо @ TomášZáluský за вашу помощь.