sql - 选择表中的异常值
问题描述
我有一个大约 100 000 个名称/行的表,看起来像这样。大约有 3000 种不同的 Refnr。这些名称在地理上聚集在 Refnr 周围。问题是有些名称的位置错误。我需要找到不适合其他行的行。我想我可以通过在相同 Refnrs 的其余部分中找到与经度和纬度相距太远的纬度或经度来做到这一点。因此,如果您看到第一个 Refnr,它们中的两个位于纬度 10.67xxx,而 1 位于纬度 10.34xxx。
因此,如果我说我想比较不同 Refnrs 中的所有名称,并找出第 2 个十进制数字与其余名称的不同之处。
有什么办法可以让我不必手动运行查询 3000 次?
参考 | 纬度 | 经度 | 姓名 |
---|---|---|---|
123 | 10.67643 | 50.67523 | 鲍勃 |
123 | 10.67143 | 50.67737 | 乔 |
123 | 10.34133 | 50.67848 | 人 |
234 | 11.56892 | 50.12324 | 伯尼 |
234 | 11.56123 | 50.12432 | 漂亮的 |
234 | 11.98135 | 50.12223 | 阿比 |
567 | 10.22892 | 50.67143 | 无所谓 |
567 | 10.22123 | 50.67236 | 蒂蒂 |
567 | 10.22148 | 50.22422 | 比利 |
我需要一个选择来给我这个。
参考 | 纬度 | 经度 | 姓名 |
---|---|---|---|
123 | 10.34133 | 50.67848 | 人 |
234 | 11.98135 | 50.12223 | 阿比 |
567 | 10.22148 | 50.22422 | 比利 |
谢谢您的帮助。
解决方案
这会平均位置的中心并寻找远离它的位置
SELECT *
, ABS((SELECT Sum(Latitude) / COUNT(*) FROM #Test) - Latitude)
+ ABS((SELECT Sum(Longitude) / COUNT(*) FROM #Test) - Longitude) as Awayfromhome
from #Test
Order by Awayfromhome desc
推荐阅读
- c# - 为什么 System.Web.UI.WebControls.Panel 的 Panel 在使用 C# 的单元测试中返回 null?
- azure-cosmosdb - 尝试在搜索服务上添加共享专用访问时,配置状态失败
- python - 我可以创建一个超级用户并在多个 Django 项目中使用它吗?
- botframework - 使用 Composer Bot 的直线扩展?
- linux - 当我尝试使用 mmc-utils 将身份验证密钥写入 RPMB 分区时,为什么会出现一般故障
- javascript - 尝试通过 javascript 加载视频
- python - 如果满足特定条件,如何使我的输出返回 True?
- javascript - 如何在 Swiper JS 中使用 activeIndex,如何使第二个滑块处于活动状态,而不是第一个
- docker - gitlab-runner:无法使用自定义容器连接到 unix:///var/run/docker.sock 的 Docker 守护进程
- excel - POI编辑excel表格时如何保持背景色