【问题标题】:How to use select query with conditions?如何使用带条件的选择查询?
【发布时间】:2015-12-03 18:46:29
【问题描述】:

假设我们有一个表事件(sensor_id:integer, event_type:integer, value:integer and 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

有什么帮助吗?

【问题讨论】:

    标签: sql database sqlite


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 2018-07-02
      • 2022-08-07
      相关资源
      最近更新 更多