查找近似重复查询

时间:2012-12-30 23:59:31

标签: python sql algorithm arcgis

我是一个完整的新手,因此无法通过查看过去的帖子找到解决方案。我有一个地理数据库(ESRI ArcMAP,大约70k记录),其中包含从两个数据库合并的道路终止数据。

实施例。

Date_, Route, MilePost, Database

10/1/2012, ML34, 113, Animal_Vehicle

10/2/2012, ML34, 113.4, Carcasses

10/2/2012, ML16, 86, Carcasses

我正在尝试整理两个数据库之间的重复记录。已删除具有相同MilePostRouteDate_的记录。问题是:Animal_Vehicle可以在一周中的任何时间或某天记录冲突,而Carcasses数据库中的记录仅在正常工作时间记录。因此,重复是由前一天或周末的Animal_Vehicle小时后记录的尸体引起的。然后在第二天早晨或周一(或假日周末的周二)由Carcasse复制记录。另一个问题是Animal_Vehicle MilePosts往往四舍​​五入到最近的半英里,而Carcasses MilePosts更精确。

目标是构建一个返回在两个Database值之间配对的记录的查询或算法,以便在Database=Carcasses时,查询返回Database=Animal_Vehicle的记录,其中MilePost 1}}是Carcasses记录的+/- 0.4,Date_Carcasses记录的最后四天内。它将返回示例数据的前两行。

非常感谢任何回复!谢谢!

1 个答案:

答案 0 :(得分:1)

这只是一个奇特的加入:

select *
from Carcasses c full outer join
     Animal_Vehicle av
     on c.date between av.date and av.date+3 and
        abs(c.Milepost - av.Milepost) < 0.5 and
        c.route = av.route

on子句具有基于您的描述的条件。这可能不是一个非常快速的查询。并且,我假设您正在使用一个数据库,您可以使用“+3”将日期添加到日期 - 这取决于数据库。