MySQL查询查找日期的每小时槽的最新记录

时间:2018-03-05 11:25:40

标签: mysql

我们有一个 event mysql表,我们存储从不同类型的传感器生成的事件。下面是同一个表的create table查询。

Devices | 00:00 to 01:00 | 01:00 to 02:00 | 02:00 to 03:00 | 03:00 to 04:00 | 04:00 to 05:00 | ... | 23:00 to 24:00

我们有一个来自设备表的device_id的外键,而设备表有一个来自zone表的zone_id的外键。

给定日期,我们希望找到每小时时段的区域设备(相同device_type)的最新事件。例如:假设一台设备在下午4:00到下午5:00之间生成了4个事件,最新事件是在该小时槽中最后发送的事件。因此,输入是 zone_id device_type & date ,输出应如下所示:

target_compile_definitions

执行相同操作的高性能查询应该是什么?

1 个答案:

答案 0 :(得分:1)

在MySQL的新版本中,您可以使用窗口功能。像这样的东西。

SELECT
LAST_VALUE(e1.id) OVER (PARTITION BY e1.id ORDER BY e1.created_at),
FROM event e1
GROUP BY DAY(e1.created_at), HOUR(e1.created_at);