【问题标题】:Select sum of an array column in PostgreSQL在PostgreSQL中选择数组列的总和
【发布时间】:2013-11-30 00:17:31
【问题描述】:

如果我有下表:

Table "users"
Column          |       Type       | Modifiers 
---------------+------------------+-----------
  id            | integer          | 
  monthly_usage | real[]           | 

其中monthly_usage 是一个由 12 个数字组成的数组,即{1.2, 1.3, 6.2, 0.9,...}

如何选择该列的总和?

类似的东西:

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

这显然行不通。

【问题讨论】:

    标签: postgresql postgresql-9.1


    【解决方案1】:

    数组的值加起来的几种方式,我常用的形式是:

    WITH X AS(
        SELECT unnest(ARRAY[1, 5, 0, 12, 1, 0, 30, 20, 8, 3, 15, 15, 20, 8]) AS VALOR
    )
    SELECT SUM(VALOR) FROM X
    

    结果:

    138
    

    欲了解更多信息https://www.postgresql.org/docs/9.1/queries-with.html

    【讨论】:

      【解决方案2】:

      这种概括和重新格式化Dmitry 的回答有助于我理解它是如何工作的:

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

      结果:

      total
       6
      

      【讨论】:

        【解决方案3】:
        SELECT id, (SELECT SUM(s) FROM UNNEST(monthly_usage) s) as total_usage from users;
        

        【讨论】:

          猜你喜欢
          • 2021-11-23
          • 2012-05-31
          • 2021-12-18
          • 1970-01-01
          • 2020-08-17
          • 2011-10-02
          • 2016-03-29
          • 1970-01-01
          • 2022-01-23
          相关资源
          最近更新 更多