小编Cod*_*aru的帖子

使用 union 优化 group by 查询

我有一个像这样的 MySQL 表:

在此处输入图片说明

我想找到一个像这样对我的表进行分组的查询:

在此处输入图片说明

细节:

a_id = 地图上划定的区域

is_flag = 1-如果传感器在区域内/ 0-如果传感器不在区域内

基本上第一个表描述了我的传感器在每个时间戳的哪个区域。

第二个表告诉我我的传感器停留在每个区域的时间。

我对每个带有 union all 的 area_id 使用以下查询,以便在单个表中输出我的传感器如何在区域之间移动的时间段以及它在每个区域中停留的时间。

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
Run Code Online (Sandbox Code Playgroud)

这是我的 dbfiddle:https ://www.db-fiddle.com/f/5pHiYKyx4yHoirRbGX4kP4/0

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

mysql sql select group-by gaps-and-islands

2
推荐指数
1
解决办法
277
查看次数

标签 统计

gaps-and-islands ×1

group-by ×1

mysql ×1

select ×1

sql ×1