我们有一个 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
执行相同操作的高性能查询应该是什么?
答案 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);