假设我们有一个表事件(sensor_id:integer,event_type:integer,value:integer和time:timestamp)。
我想为每个传感器和事件类型提供一个SQL,以返回最新的值(按时间计算)。该表应按sensor_id(asc),event_type(asc)排序。
sensor_id | event_type | value | time
-----------+------------+------------+--------------------
2 | 2 | 5 | 2014-02-13 12:42:00
2 | 4 | -42 | 2014-02-13 13:19:57
2 | 2 | 2 | 2014-02-13 14:48:30
3 | 2 | 7 | 2014-02-13 12:54:39
2 | 3 | 54 | 2014-02-13 13:32:36
将返回:
sensor_id | event_type | value
-----------+------------+-----------
2 | 2 | 2
2 | 3 | 54
2 | 4 | -42
3 | 2 | 7
有任何帮助吗?
答案 0 :(得分:1)
您可以聚合这些值并获得每个sensor_id和event_type组合的max
时间。然后使用最长时间加入原始事件表。
select t.sensor_id, t.event_type, e.value
from events e
join (select sensor_id, event_type, max(time) as mxtime
from events
group by sensor_id, event_type) t
on t.sensor_id = e.sensor_id and t.event_type = e.event_type and t.mxtime = e.time