【问题标题】:count the number of an array计算一个数组的个数
【发布时间】:2019-05-16 21:35:03
【问题描述】:

我想获取数组中每个元素的计数。我正在使用postgres。 我有数组 [1,2,3,1,1,2]。如何将这些数组元素与每个元素进行比较。

输出将是:

数组元素 | 计数


1 | 3

2 | 2

3 | 1

【问题讨论】:

    标签: arrays postgresql counter


    【解决方案1】:

    你可以使用unnest:

    SELECT array_elem, COUNT(*) AS cnt
    FROM t, unnest(c) s(array_elem)
    GROUP BY array_elem
    ORDER BY array_elem;
    

    db<>fiddle demo

    【讨论】:

    • 如果数组是动态的会发生什么?如何在 SELECT '{1,2,3,1,1,2}'::int[] AS c 中构造表? & s(array_elem) 的目的是什么?
    【解决方案2】:

    应用于单个值(不是表列):

    SELECT i, count(*) AS cnt
    FROM   unnest('{1,2,3,1,1,2}'::int[]) i
    GROUP  BY i
    ORDER  BY i;
    

    unnest() 是一个集合返回函数,又名“表函数”。您基本上可以将它用作SELECT 查询中的表。

    【讨论】:

      猜你喜欢
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 2020-07-22
      • 2014-12-10
      相关资源
      最近更新 更多