postgres:多个字段的聚合函数

问题描述 投票:0回答:1

我的表是:

price: numeric, time: timestamp, type: integer

我想按类型分组,并为每个组找到最高价格和最早(按时间)价格。

从计算的角度来看,它是一种简单的线性/简化操作。但是如何才能在postgres中完成?有这样的现有功能吗?我必须创建自己的聚合?我应该将两个字段编码为像$time-$price这样的字段并从中找到最小值吗?

sql postgresql group-by aggregate
1个回答
1
投票

嗯。 Postgres没有first()聚合函数,但您可以使用数组:

select type,
       max(price),
       array_agg(price order by time asc)[1] as earliest_price
from t
group by type;

编辑:

还有其他方法,例如:

select distinct on (type) type,
       max(price) over (partition by type),
       price
from t
order by type, time asc;
© www.soinside.com 2019 - 2024. All rights reserved.