Выберите сумму столбца массива в PostgreSQL - программирование

Выберите сумму столбца массива в PostgreSQL

Если у меня есть следующая таблица:

Table "users"
Column          |       Type       | Modifiers 
---------------+------------------+-----------
  id            | integer          | not null default nextval('users_id_seq'::regclass)
  monthly_usage | real[]           | 

Где monthly_usage - массив из 12 чисел, т.е. {1.2, 1.3, 6.2, 0.9,...}

Как я могу выбрать сумму этого столбца?

Что-то по строкам:

SELECT id, sum(monthly_usage) as total_usage from users;

Что явно не работает.

4b9b3361

Ответ 1

SELECT id, (SELECT SUM(s) FROM UNNEST(monthly_usage) s) as total_usage from users;

Ответ 2

Это обобщение и переформатирование Dmitry помогает мне понять, как это работает:

SELECT
  sum(a) AS total
FROM
  (
    SELECT
      unnest(array [1,2,3]) AS a
  ) AS b

Результат:

total
 6