【问题标题】:Postgres: get min, max, aggregate values in one selectPostgres:一次选择获取最小值,最大值,聚合值
【发布时间】:2014-03-11 07:49:28
【问题描述】:

我正在使用 Postgresql 8.4。我有一张这样的桌子:

 type | value
------+-------
 1    | 5
 2    | 6
 1    | 4
 3    | 10

我想写一个选择,它将给我最小值和最大值,并将所有类型的聚合为integer[]。期望的结果应该是:

 min | max | types
-----+-----+-----------
 4   | 10  | {1, 2, 3}

为了得到最小值和最大值,我已经有了:

SELECT MIN(value) min, MAX(value) max FROM table;

为了获得独立选择中的类型,我使用:

SELECT array_agg(DISTINCT type) types FROM table;

我怎样才能将这些组合成一个选择(不是太低效)?

【问题讨论】:

  • SELECT MIN(value) min, MAX(value) max, array_agg(DISTINCT type) types FROM table; 不适合你吗?

标签: sql postgresql aggregate-functions


【解决方案1】:
SELECT array_agg(DISTINCT type) AS types,
       MIN(value) AS min,
       MAX(value) AS max
FROM your_table

【讨论】:

    【解决方案2】:

    试试这个查询:

    SELECT * FROM
    (SELECT MIN(value),MAX(value) FROM table1)t1,
    (SELECT array_agg(DISTINCT type) FROM table1)t2;
    

    SQL Fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 2014-02-22
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多