Как сделать селект из колонки с массивом чисел?

Чтобы сделать SELECT-запрос из колонки с массивом чисел в PostgreSQL, вы можете использовать оператор экспоненцирования (unnest), функцию array_agg и как минимум одно условие для фильтрации результата.

Допустим, у вас есть таблица "numbers_table" со следующей схемой:

CREATE TABLE numbers_table (
id SERIAL PRIMARY KEY,
numbers INT[]
);

и она содержит следующие данные:

INSERT INTO numbers_table (numbers) VALUES (ARRAY[1, 2, 3]);
INSERT INTO numbers_table (numbers) VALUES (ARRAY[4, 5]);
INSERT INTO numbers_table (numbers) VALUES (ARRAY[6, 7, 8, 9]);

Теперь, чтобы сделать SELECT-запрос из колонки "numbers", вы можете использовать следующий запрос:

SELECT id, unnest(numbers) AS number
FROM numbers_table
WHERE number > 5;

Этот запрос раскроет массив чисел в отдельные строки и затем выберет только те строки, где число больше 5.

Результат будет выглядеть следующим образом:

id | number
---+------
3 | 6
3 | 7
3 | 8
3 | 9

Если вам нужно получить уникальные значения из массива, то вы можете использовать функцию array_agg в сочетании с оператором DISTINCT:

SELECT id, array_agg(DISTINCT unnest(numbers)) AS unique_numbers
FROM numbers_table
GROUP BY id;

Этот запрос объединит уникальные значения из массива чисел и сгруппирует их по id.

Результат будет выглядеть следующим образом:

id | unique_numbers
---+---------------
1 | {1,2,3}
2 | {4,5}
3 | {6,7,8,9}

Таким образом, вы можете использовать оператор unnest и функцию array_agg для работы с массивами чисел в PostgreSQL. Это позволяет раскрывать массивы и фильтровать значения, а также выполнять другие операции с элементами массива при необходимости.