У меня есть таблица, которая выглядит следующим образом:
id num
--- ----
1 {'1','2','3','3'}
2 {'2','3'}
3 {'5','6','7'}
Здесь id
- это уникальный столбец, а num
- это текстовый массив , которыйможет содержать повторяющиеся элементы.Я хочу сделать что-то вроде пересечения между двумя последовательными строками, чтобы получить общее число элементов между num
двух рядов.Рассмотрим что-то вроде набора, в котором дубликаты рассматриваются только один раз.Например, для приведенной выше таблицы я ожидаю что-то вроде следующего:
id1 id2 count
--- --- -----
1 2 2
1 3 0
2 1 2
2 3 0
3 1 0
3 2 0
Нет необходимости получать выходные данные, как указано выше.Единственная часть, которая меня беспокоит, это count
.
У меня есть следующий запрос, который дает вывод только для одного идентификатора по сравнению с одним другим идентификатором:
select unnest(num) from emp where id=1
intersect
select unnest(num) from emp where id=2
Как я могу обобщитьэто чтобы получить требуемый вывод?