在PostgreSQL中选择数组列的总和

Nic*_*las 19 postgresql postgresql-9.1

如果我有下表:

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

monthly_usage12个数字的数组在哪里,即{1.2, 1.3, 6.2, 0.9,...}

如何选择该列的总和?

有点像:

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

这显然不起作用.

小智 32

SELECT id, (SELECT SUM(s) FROM UNNEST(monthly_usage) s) as total_usage from users;
Run Code Online (Sandbox Code Playgroud)


jbr*_*ott 5

这种概括和重新格式化Dmitry的答案有助于我理解它的工作原理:

SELECT
  sum(a) AS total
FROM
  (
    SELECT
      unnest(array [1,2,3]) AS a
  ) AS b
Run Code Online (Sandbox Code Playgroud)

结果:

total
 6
Run Code Online (Sandbox Code Playgroud)