Чтобы сделать 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. Это позволяет раскрывать массивы и фильтровать значения, а также выполнять другие операции с элементами массива при необходимости.