Сгладить подмассив в postgresql

#sql #postgresql

#sql #postgresql

Вопрос:

Ввод:

 postgres=> select sets from matches limit 2;

         sets         
----------------------
 {{6,4},{6,2}}
 {{6,3},{5,7},{10,4}}

(2 rows)
  

Ожидаемое (сумма значений в каждом массиве)

 postgres=> select sets from matches limit 2;

         sets         
----------------------
 18
 33

(2 rows)
  

Я пытался, но это дает мне только значение двух первых значений в первом подмассиве:

 postgres=> select unnest(sets) from matches limit 2;

 unnest 
--------
      6
      4

(2 rows)

  

Ответ №1:

Вы можете использовать скалярный подвыбор:

 select (select sum(i)
        from unnest(sets) as t(i)) as sum
from matches;
  

Ответ №2:

Я давно не работал с postgres, но, может быть, вам не хватает части суммы?:

 SELECT
  sum(a) AS total
FROM
  (
    SELECT
      unnest(sets from matches) AS a
  ) AS b