Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL(postgres)中的签入列表生成路由_Sql_Postgresql - Fatal编程技术网

从SQL(postgres)中的签入列表生成路由

从SQL(postgres)中的签入列表生成路由,sql,postgresql,Sql,Postgresql,我的桌子:checkinserverid,time,venueid 问题:要生成表示用户所走路线步骤的视图 想法:为了生成表单A,B的对,其中A是签入,B是具有时间限制的后续签入。同一天,B在A之后 什么不起作用:现在我的查询生成像A、B1、A、B2这样的查询。。。其中Bx是在a之后完成的签入。A1、B、A2、B也是如此。。。夫妇 我所需要的只是表A、B1和A1、B的一对,它们表示路由中真正的后续步骤,就像图中的圆弧,其中节点是原始签入 我当前结果的示例: 前3行具有相同的到达时间,而后2行具有

我的桌子:checkinserverid,time,venueid

问题:要生成表示用户所走路线步骤的视图

想法:为了生成表单A,B的对,其中A是签入,B是具有时间限制的后续签入。同一天,B在A之后

什么不起作用:现在我的查询生成像A、B1、A、B2这样的查询。。。其中Bx是在a之后完成的签入。A1、B、A2、B也是如此。。。夫妇

我所需要的只是表A、B1和A1、B的一对,它们表示路由中真正的后续步骤,就像图中的圆弧,其中节点是原始签入

我当前结果的示例: 前3行具有相同的到达时间,而后2行具有相同的开始时间。我只需要第1行和第4行


我的实际解决方案:

您可以在WHERE using NOT EXISTS中设置另一个条件,并在同一个表中进行第三次查询,以便在两次查询之间进行签入,同时注意在同一时间戳内的多个签入!,或按如下方式使用行号

CREATE VIEW vw_checkins AS
SELECT
    userid,
    time,
    venueid,
    row_number() OVER (PARTITION BY userid ORDER BY time) as row_number
FROM "POIs"."test";
然后可以按如下方式构建联接:

select A.userid, A."venueID", B."venueID", A.time as start_time, B.time as arrival_time
from vw_checkins as A, vw_checkins as B
where
    B.row_number = A.row_number + 1
    and date_trunc('day', A.time)=date_trunc('day', B.time)
    and A."venueID" <> B."venueID"
    and A.userid=B.userid;
请注意,我还用:[NOT]LIKE替换了您的NOT LIKE,如果您不需要它,请将其删除,例如正则表达式比较