Использование generate_series
:
demo: db <> fiddle
Не совсем ясно, как выглядят ваши данные:
A: У вас есть одна таблица с двумя столбцами x и y и ровно одна строка:
x | y
--+--
2 | 5
B: У вас есть одна таблица с двумя столбцами x и y и более одной строки:
x | y
--+--
2 | 5
3 |10
Не совсем ясно, что вы имеете в виду под «счетом»:
I .: Вы хотите одну строку на элемент:
count
-----
2
3
4
5
II .: Вы хотитемассив всех элементов:
count
-----
{2,3,4,5}
AI: у вас есть таблица с двумя столбцами x и y с ровно одной строкой и требуется одна строка на элемент:
SELECT generate_series(x, y)
FROM values;
Результат, как показано в I. выше
BI: у вас много строк:
Тот же запрос, результатом является объединение сгенерированных строк:
count
-----
2
3
4
5
3
4
5
6
7
8
9
10
A.II: одна строка, требуется массив:
Вы должны сгруппировать сгенерированный ряд
SELECT array_agg(gs)
FROM (
SELECT x, generate_series(x, y) as gs
FROM values
) s
GROUP BY x
Результат какзамечено во II.
B.II: много строк, требуется массив:
тот же запросу, результат выглядит так:
count
------------------
{2,3,4,5}
{3,4,5,6,7,8,9,10}