Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 通过选择postgres group by中的最后一个元素进行聚合_Postgresql - Fatal编程技术网

Postgresql 通过选择postgres group by中的最后一个元素进行聚合

Postgresql 通过选择postgres group by中的最后一个元素进行聚合,postgresql,Postgresql,我有一个表,其中包含postges中的对象统计信息,其中包含以下列: id整数 对象id整数 时间戳带时区的时间戳 尺寸字符变化 值整数 注意,它使用的是实体属性值(eav)模式-实体是对象id,属性是维度,值是值 作业每晚运行,为每个对象(由对象id指定)收集六个维度上的值(由维度指定) 我想构建一个报告页面,显示每个维度的最新值,以及每个产品的最新值。查询如下所示: 按产品id从pt_读取组中选择对象id、维度、第一个(值)、按产品id选择维度顺序、维度、时间戳描述 FIRST将选择第一

我有一个表,其中包含postges中的对象统计信息,其中包含以下列:

  • id整数
  • 对象id整数
  • 时间戳带时区的时间戳
  • 尺寸字符变化
  • 整数
注意,它使用的是实体属性值(eav)模式-实体是
对象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;