【发布时间】:2013-03-08 07:27:57
【问题描述】:
我有一个包含 postges 中的对象统计信息的表格,其中包含以下列:
- id 整数
- object_id 整数
- 时间戳带有时区的时间戳
- 尺寸字符变化
- 值整数
注意它使用的是实体-属性-值(eav)模式——实体是object_id,属性是dimension,值是value。
每晚运行一个作业,为每个对象(由object_id 指定)收集六个维度(由dimension 指定)的值。
我想构建一个报告页面,显示每个dimension 和每个product 的最新value。查询如下所示:
select object_id, dimension, FIRST(value) from pt_reading group by product_id, dimension order by product_id, dimension, timestamp desc;
FIRST 会选择第一个value,因为我是按时间戳降序排序的。不幸的是,FIRST 不是一个有效的聚合函数。
最好的设计模式是什么?我总是可以回退到用 python 编写它,但它似乎可以由数据库处理。另外,如果我应该使用不同的设计模式来做到这一点,请加入。
【问题讨论】:
-
对于一些解释你可能对this related answer感兴趣。
标签: postgresql