【发布时间】:2020-08-28 17:08:58
【问题描述】:
我有一个如下所示的 MySQL 表:
我想找到一个这样对我的表进行分组的查询:
详情:
a_id = 地图上的分隔区域
is_flag = 1 - 如果传感器在区域内/0 - 如果传感器不在区域内
基本上,第一个表格描述了我的传感器在每个时间戳所在的区域。
第二张表告诉我传感器在每个区域进出的时间。
我对每个 area_id 使用 union all 的以下查询,以便在单个表中输出我的传感器如何在区域之间移动的时间段以及它在每个区域内/外的停留时间。
select t.a_id, min(t.timestamp) starttime,max(t.timestamp) endtime,
t.is_flag from(SELECT *,
ROW_NUMBER() OVER(ORDER BY a.timestamp) - ROW_NUMBER() OVER(PARTITION BY
a.is_flag ORDER BY a.timestamp) as GRP
FROM tablename a where areas_id=25 ) t
group by is_flag , GRP, a_id
这是我的 dbfiddle:https://www.db-fiddle.com/f/5pHiYKyx4yHoirRbGX4kP4/0
我的查询可以满足我的需要,但需要一整天的时间。
【问题讨论】:
-
我看到“它必须是什么样子”,但我不明白为什么会这样。详细解释。
-
请描述应该实现什么登录
-
我用更多细节编辑了我的问题。
-
这是我的数据库小提琴:db-fiddle.com/f/5pHiYKyx4yHoirRbGX4kP4/0
标签: mysql sql select group-by gaps-and-islands