nterpolação entre dois valores em uma única consul
Eu quero calcular um valor interpolando o valor entre dois vizinhos mais próximos. Eu tenho uma subconsulta que retorna os valores dos vizinhos e sua distância relativa, na forma de duas colunas com dois elemento
Digamos
(select ... as value, ... as distance
from [get some neighbours by distance] limit 2) as sub
Como posso calcular o valor do ponto por interpolação linear? É possível fazer isso em uma única consulta?
Exemplo Meu ponto tem o vizinho A com valor 10 na distância 1 e o vizinho B com valor 20 na distância 4. A função deve retornar um valor10 * 4 + 20 * 1 / 5 = 12
pelo meu ponto.
Tentei a abordagem óbvia
select sum(value * (sum(distance)-distance)) / sum(distance)
que falhará porque você não pode trabalhar com cláusulas de grupo dentro de cláusulas de grupo. Usar outra subconsulta retornando a soma também não é possível, porque não posso encaminhar os valores individuais ao mesmo temp