如何使用条件选择查询?

时间:2015-12-03 18:46:29

标签: sql database sqlite

假设我们有一个表事件(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

有任何帮助吗?

1 个答案:

答案 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