Interpolación entre dos valores en una sola consulta

Quiero calcular un valor interpolando el valor entre dos vecinos más cercanos. Tengo una subconsulta que devuelve los valores de los vecinos y su distancia relativa, en forma de dos columnas con dos elementos.

Digamos

(select ... as value, ... as distance 
 from [get some neighbours by distance] limit 2) as sub

¿Cómo puedo calcular el valor del punto por interpolación lineal? ¿Es posible hacer eso en una sola consulta?

Ejemplo Mi punto tiene el vecino A con valor 10 en la distancia 1, y el vecino B con valor 20 en la distancia 4. La función debe devolver un valor10 * 4 + 20 * 1 / 5 = 12 para mi punto.

Intenté el enfoque obvio

select sum(value * (sum(distance)-distance)) / sum(distance)

que fallará porque no puede trabajar con cláusulas de grupo dentro de cláusulas de grupo. Tampoco es posible utilizar otra subconsulta para devolver la suma, porque no puedo reenviar los valores individuales al mismo tiempo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta