Postgresql 通过选择postgres group by中的最后一个元素进行聚合
我有一个表,其中包含postges中的对象统计信息,其中包含以下列:Postgresql 通过选择postgres group by中的最后一个元素进行聚合,postgresql,Postgresql,我有一个表,其中包含postges中的对象统计信息,其中包含以下列: id整数 对象id整数 时间戳带时区的时间戳 尺寸字符变化 值整数 注意,它使用的是实体属性值(eav)模式-实体是对象id,属性是维度,值是值 作业每晚运行,为每个对象(由对象id指定)收集六个维度上的值(由维度指定) 我想构建一个报告页面,显示每个维度的最新值,以及每个产品的最新值。查询如下所示: 按产品id从pt_读取组中选择对象id、维度、第一个(值)、按产品id选择维度顺序、维度、时间戳描述 FIRST将选择第一
- id整数
- 对象id整数
- 时间戳带时区的时间戳
- 尺寸字符变化
- 值整数
对象id
,属性是维度
,值是值
作业每晚运行,为每个对象(由对象id
指定)收集六个维度上的值(由维度指定)
我想构建一个报告页面,显示每个维度的最新值
,以及每个产品的最新值。查询如下所示:
按产品id从pt_读取组中选择对象id、维度、第一个(值)、按产品id选择维度顺序、维度、时间戳描述代码>
FIRST
将选择第一个值,这是我想要的值,因为我是按时间戳desc排序的。不幸的是,FIRST不是有效的聚合器函数
最好的设计模式是什么?我总是可以回过头来用python编写它,但它似乎可以由数据库处理。另外,如果我应该使用不同的设计模式来完成这项工作,请插话。了解一些您可能感兴趣的解释。
select distinct on (object_id, dimension)
object_id,
dimension,
value
from pt_reading
order by object_id, dimension, "timestamp" desc;