У меня есть таблица в postgresql-9.4.2 с столбцом массива.Создать массив «счетчик» в psql
create schema test_schema;
create table test_schema.test_table;
(
array_column int[]
);
insert into test_schema.test_table values
(ARRAY[5,12,6,2]),
(ARRAY[51,4,2]),
(ARRAY[2]),
(ARRAY[3,16]);
Какой будет выглядеть следующим образом
| array_column |
| integer[] |
--------------------
1 | {5,12,6,2} |
2 | {51,4,2} |
3 | {2} |
4 | {3,16} |
Я хочу, чтобы запросить эту таблицу и добавить столбец на мой запрос, который является массивом, считая от 1 до размера массива.
Я понял, как создать массив того же размера, как показано ниже
select
array_column,
array_fill(1,array[array_length(array_column,1)],array[1]) as counter
from
test_schema.test_table;
, который возвращает следующие результаты
| array_column | counter |
| integer[] | integer[] |
---------------------------------
1 | {5,12,6,2} | {1,1,1,1} |
2 | {51,4,2} | {1,1,1} |
3 | {2} | {1} |
4 | {3,16} | {1,1} |
Я собирался взять качению сумму счетчик, который дал бы мне желаемый результат, но я не могу понять, как это сделать.
Это желаемый результат:
| array_column | counter |
| integer[] | integer[] |
---------------------------------
1 | {5,12,6,2} | {1,2,3,4} |
2 | {51,4,2} | {1,2,3} |
3 | {2} | {1} |
4 | {3,16} | {1,2} |
Спасибо за вашу помощь
'generate_scripts' является более простым, но обратите внимание, что ОП может не хочу удалять дубликаты в 'array_column' –
@ClodoaldoNeto Я не хочу nk это фактически исключает дубликаты, я изменил мои значения для строки 1 на ARRAY [5,5,5,5], и ответ klin все еще работал – Dan
@ Dan Я имею в виду дубликаты массивов между строками (2+ строки с тем же массивом) –