【发布时间】:2022-01-22 18:37:30
【问题描述】:
我有一张表,上面有城镇、市、县和坐标的名称。不幸的是,一些城镇有“几乎重复”,即存在另一行具有相同名称、市、县和坐标的非常接近第一行。有些甚至有不止一个“近似重复”。
我怎样才能删除除其中一种之外的所有行?
我知道我可以使用带有ROW_NUMBER() OVER(PARTITION BY name, municipality, county, latitude, longitude) 的 CTE 来删除完全重复的内容。但是我如何检查纬度和经度是否在0.005(= 大约 500-600 米,以十进制度为单位的纬度/经度)之内?
样本数据
ID Name Municipality County Lat Lng
------------------------------------------------------------
1 Springfield Simpsonville Homer 12.34567 89.01234
2 Springfield Simpsonville Homer 12.35000 89.01200
3 Springfield Simpsonville Homer 12.00000 89.00000
4 AnotherTown AnotherVille Bart 12.34567 89.01234
由于2 与1 同名、市和县,并且在1 的经纬度上都在0.005 十进制度内,因此它被认为是重复的,应该删除。
另一方面,3 不在1 的0.005 十进制度范围内,因此它不应被视为1 的重复。
预期结果
ID Name Municipality County Lat Lng
--------------------------------------------------------
1 Springfield Simpsonville Homer 12.34567 89.01234
3 Springfield Simpsonville Homer 12.00000 89.00000
4 AnotherTown AnotherVille Bart 12.34567 89.01234
【问题讨论】:
-
你如何计算接近度?发布示例数据和预期结果以阐明您想要什么。
-
请提供样本数据和所需结果
-
@forpas 添加了示例数据和预期结果。请正确阅读问题,了解如何计算接近度。
-
@Stu 好了,现在您有了样本数据和预期结果。
标签: sql sqlite sql-delete exists