Как сделать сумму для каждой строки значений столбца? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть таблица SQL, содержащая столбец списка int, например,

Index   Column to sum
1   1:5:13:3:6:7:11:2:4:1:2:5
2   1:7:2:1:1
3   19:05:05
4   2:1:1:5:1:4:64:177:86:75:2:83:2:57:1
5   43
6   1:1:1:3:10:6:1
7   2:11:4:3:1
8   1:5:2:3:34:2:2
9   4:3:1:2
10  4:1:1:4

Я хотел бы вычислить в SQL сумму для каждой строки столбца для сумма значение. Это даст что-то вроде этого:

1 60
2 12
...
10 10

Есть идеи? Спасибо

1 Ответ

2 голосов
/ 10 июля 2020

Ваша первая попытка должна go исправить вашу модель данных, как прокомментировал Гордон Линофф. Числа должны храниться в отдельной таблице, каждое значение должно быть в отдельной строке.

В Postgres вы можете разделить значения на строки, используя regexp_split_to_table(), а затем агрегировать:

select t.id, sum(x.val::int) result
from mytable t
cross join lateral regexp_split_to_table(t.column_to_sum, ':') as x(val)
group by t.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...