Подсчитать количество перекрывающихся элементов в массиве Postgres - PullRequest
0 голосов
/ 08 мая 2018

У меня есть массив целых чисел в качестве столбца.

Есть ли способ запросить количество перекрывающихся целых чисел?

Например, для следующих 3 записей:

COLUMN1
{1,3,7}
{3,4,5}
{1,2}

Как узнать количество перекрывающихся элементов с помощью ARRAY [3,4,8]?

Результат для моего примера должен быть:

1 (element 3)
2 (element 3 and 4)
0 (none)

Я нашел

SELECT COLUMN1 && ARRAY[44,45,46] FROM table1

Но это возвращает истину или ложь.

1 Ответ

0 голосов
/ 08 мая 2018

Если вы устанавливаете расширение intarray , вы можете использовать оператор "пересечения" из этого расширения:

select column1, column1 & ARRAY[3,4,8] as elements
from table1

возвращается:

column1 | elements
--------+---------
{1,3,8} | {3,8}   
{3,4,5} | {3,4}   
{1,2}   | {}      

Чтобы получить количество элементов в результирующем массиве, используйте cardinality(column1 & ARRAY[3,4,8])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...