postgre数据库有一个车辆行程列表和一个车辆定位信息表,想查询车辆第一段行程结束和第二段行程开始的定位之间的距离,目前能实现单辆车的行程段之间的距离查询,每辆车有单独的watch_point_id,如何实现多辆车查询
你贴的这个sql对解答这个问题貌似没有任何帮助,
建议你把这个逻辑简化一下,贴出对应的数据结构,看看你是什么样的数据想和什么样的数据关联,最后想要得到的数据是长什么样子。
关系型数据库的关联条件本就是可以一对多的,
如果是想让一个值和一个由多个值组成的字符串关联,也是可行的,但这种情况不同数据库的处理方式不一样,所以你还得说明一下你用的是什么数据库
问题改了后清晰多了,这就一个简单的开窗函数运用问题,把一个表里下一行的数据放到本行。
开窗函数lead,是可以使用partition by 关键词来进行分组的,也就是说可以按照路程号分组,每组之间的数据并不会出现交叉,
比如下面就是按journey_number分组
select a.*,
lead(longitude) over(partition by journey_number order by client_time) 下一个经度,
lead(latitude) over(partition by journey_number order by client_time) 下一个纬度
from vehicle_location a