2013-11-16 11 views
10

Если у меня есть следующая таблица:Выберите сумму столбца массива в 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;

который, очевидно, не работает.

ответ

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

Не похоже на работу:' ОШИБКА: многозначные функции вызванный в контексте, который не может принять набор – Nicolas

+1

Я отредактировал запрос, пожалуйста, проверьте его снова. –

0

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

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

Результат:

total 
6 
Смежные вопросы