查询历史数据

Joh*_*Doe 3 sql postgresql

要描述我的查询问题,以下数据很有用:

在此输入图像描述

单个表包含列ID(int),VAL(varchar)和ORD(int)

VAL的值可能会随着时间的推移而发生变化,ID标识的旧项目不会更新,而是附加.ID的最后一个有效项由最高ORD值(随时间增加)标识.

T0,T1和T2是输入数据的时间点.

  • 如何以有效的方式获得结果集?

解决方案不得涉及物化视图等,但应在单个SQL查询中表达.使用Postgresql 9.3.

Jak*_*nia 5

在postgres中选择分组最大值的正确方法是使用 DISTINCT ON

SELECT DISTINCT ON (id) sysid, id, val, ord
FROM my_table
ORDER BY id,ord DESC;
Run Code Online (Sandbox Code Playgroud)

小提琴