我的表格是:
price: numeric, time: timestamp, type: integer
我想按类型分组,并为每个组找到最高价格和最早(按时间)价格。
从计算的角度来看,这是一个简单的线性/归约操作。但是在postgres中怎么做呢?有没有像这样的现有函数?我必须创建我自己的聚合吗?我是不是应该像$time-$price
一样把两个字段编码成一个,然后从中找出最小值?
发布于 2019-03-27 22:38:00
嗯。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;
https://stackoverflow.com/questions/55379861
复制相似问题