通过联合查询优化分组

问题描述

我有一个如下所示的MySQL表:

enter image description here

我想找到一个对表进行分组的查询,如下所示:

enter image description here

详细信息:

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

我的查询可以满足我的需求,但需要花费一整天的时间。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)