Postgres:在一次选择中获取最小值、最大值、聚合值

vek*_*tor 2 sql postgresql aggregate-functions

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

 type | value
------+-------
 1    | 5
 2    | 6
 1    | 4
 3    | 10
Run Code Online (Sandbox Code Playgroud)

我想写一个选择,它会给我最小值和最大值,以及所有类型的聚合integer[]。想要的结果应该是:

 min | max | types
-----+-----+-----------
 4   | 10  | {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)

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

SELECT MIN(value) min, MAX(value) max FROM table;
Run Code Online (Sandbox Code Playgroud)

要在独立选择中获取类型,我使用:

SELECT array_agg(DISTINCT type) types FROM table;
Run Code Online (Sandbox Code Playgroud)

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

Dip*_*aul 6

SELECT array_agg(DISTINCT type) AS types,
       MIN(value) AS min,
       MAX(value) AS max
FROM your_table
Run Code Online (Sandbox Code Playgroud)