QGis SQL Query - "Удаление почти повторяющихся записей"
У меня есть таблица с матрицей расстояний между всеми точками другой таблицы. На матрице расстояний я просто держал линии на расстоянии менее 100 метров. Я называю точки, расположенные на расстоянии менее 100 м от всех повторяющихся записей. Но в матрице расстояний каждая запись дубликатов занимает 2 строки. Матрица расстояний выглядит следующим образом:
InputID TargetID Distance
1 2 75
1 3 35
2 1 75
3 1 35
Я хотел бы сохранить только один из этих дубликатов, что означает, что в предыдущем примере я хотел бы оставить только линию 1, потому что 2 и 3 расположены на расстоянии менее 100 м от 1. Но если я оставлю только 1 на матрице расстояний, мне также нужно будет оставить только 1 на исходной таблице.
Я использую инструмент SQL Query от QGis, но я не знаю, как программировать. Кто-нибудь может мне помочь?
Спасибо!
1 ответ
Вы можете использовать некоторый подзапрос в join для получения значения для удаления
delete from my_table m2
inner join (
select m.distance, min(m.InputId) min_id
from my_table m.
inner join (
select distance, count(*)
from my_table
group by Distance
having count(*) > 1
) t on t.distance = m.distance
group by distance
) t2 on t2.distance = m2.distance and t2.min_id = m2.InputId