Как просуммировать значения полей типа массив в postgresql?
Вот такой запрос
with rec as (select "recordId" as rec_id from catalog_12_links where "catalogRecordId"=1) select field7[1] as s from catalog_12_data where "id" in (select rec_id from rec) and field4 = '{2}';
дает такой результат
s
---
2
2
(2 rows)
как получить сумму этих значений ? и еще подскажите что конкретно почитать, чтобы я сам додумался
Да, изучал эту страницу полдня сегодня, но придумать не смог, понимаю, что ключ в функции sum, но она не предназначена для элементов типа массив, или что-то не так понял ?
если внимательно посмотреть то вот select field7[1]
я пробовал sum(field7[1]) но выходит ошибка
ERROR: function sum(character varying) does not exist
может я в синтаксисе ошибся или вообще запрос надо по другому построить ?
filed7 содержит массив с одним элементом, мне нужно выбрать строки по условию и просуммировать все элементы (я точно знаю, что там всегда будет массив с одним элементом) всех строк этого массива. Возможно там не int но там всегда либо 1 либо . Такую задачу возможно решить ?
with rec as (select "recordId" as rec_id from catalog_12_links where "catalogRecordId"=1) select field7,field8,field9,field10 from catalog_12_data where "id" in (select rec_id from rec) and field4 = '{2}';
with rec as (select "recordId" as rec_id from catalog_12_links
where "catalogRecordId"=1)
select field7[1] + field8[1] + field9[1] + field10[1] from catalog_12_data
where "id" in (select rec_id from rec) and field4 = '{2}';