我有一个表,其中包含 postges 中的对象统计信息,其中包含以下列:
- id整数
- object_id整数
- 带时区的时间戳
- 尺寸特征变化
- 值整数
请注意,它使用的是实体-属性-值(eav)模式-实体是object_id
,属性是dimension
,值是value
。
每晚运行一个作业,dimension
为每个对象(由 指定)收集超过六个维度(由 指定object_id
)的值。
我想建立一个报告页面,显示value
每个dimension
. product
查询将如下所示:
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 编写它,但它似乎可以由数据库处理。另外,如果我应该使用不同的设计模式来做到这一点,请加入。