Sql 在Google Big Query中获取组中的第一个和最后一个记录
我有一组由Id1和Id2订购的Gps点。对于每个组,我必须获得输出中显示的第一个和最后一个记录 我试着根据Id1和Id2对它进行分区,然后根据时间按asc和desc顺序对它进行排序,得到它们的第一个和最后一个记录,但是我没有得到想要的结果。我不知道我会错在哪里Sql 在Google Big Query中获取组中的第一个和最后一个记录,sql,google-bigquery,Sql,Google Bigquery,我有一组由Id1和Id2订购的Gps点。对于每个组,我必须获得输出中显示的第一个和最后一个记录 我试着根据Id1和Id2对它进行分区,然后根据时间按asc和desc顺序对它进行排序,得到它们的第一个和最后一个记录,但是我没有得到想要的结果。我不知道我会错在哪里 Id1 Id2 STime ETime Latitude Longitude 11 112 2016-11-23 12:15:41 2016-11
Id1 Id2 STime ETime Latitude Longitude
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258755 -80.1347351
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258755 -80.1347351
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258488 -80.13432
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1261063 -80.13432
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1261559 -80.13432
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.12608 -80.13691
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.12608 -80.13691
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261559 -80.13696
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261559 -80.13696
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261063 -80.13696
Id1 Id2 STime ETime Latitude Longitude
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258755 -80.1347351
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1261559 -80.13432
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.12608 -80.13691
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261063 -80.13696
当前查询:
SELECT
A.Id1 ,
A.Id2,
STime,
ETime,
Latitude,
Longitude
FROM
M.A AS A
JOIN
L.B AS B
ON
A.STime < B.DateTime
AND A.ETime >= B.DateTime
AND A.ID1 = B.Id1
WHERE
(A._PARTITIONTIME BETWEEN TIMESTAMP('2016-11-23')
AND TIMESTAMP('2016-11-23')
AND A.Id1 IN (550315976))
ORDER BY
B.Id1,
A.Id1,
B.DateTime
选择
A.Id1,
A.Id2,
史提姆,
时间,
纬度,
经度
从…起
文学硕士
参加
L.B.作为B
在…上
A.时间=B.DateTime
A.ID1=B.ID1
哪里
(A._时间戳之间的分割时间('2016-11-23')
和时间戳(“2016-11-23”)
和A.Id1 IN(550315976))
订购人
B.Id1,
A.Id1,
日期时间
这可能有助于澄清是什么定义了一个组。在您的查询中,您只加入Id1
,而不是Id2
,因此A
和B
的值是相同的Id1
值,但可能不同的Id2
值。请阅读询问的最佳实践:如何显示您遇到问题的代码,以及。具体来说,我建议您添加两个表的示例
,并澄清第一条和最后一条记录的含义,这可能有助于澄清组的定义。在您的查询中,您只加入Id1
,而不是Id2
,因此A
和B
的值是相同的Id1
值,但可能不同的Id2
值。请阅读询问的最佳实践:如何显示您遇到问题的代码,以及。具体来说,我建议您添加两个表的示例
,并澄清第一条和最后一条记录的含义