Estoy trabajando con datos en Postgresql+PostGIS y me he sorprendido a mí mismo (probablemente de overthinking). Para cada uno de lat/long en un site
tabla, quiero calcular un promedio de un campo para todos los puntos dentro de una cierta distancia de la lat/long. Por ejemplo:
SELECT
site.id,
ring1.avg as r1_avg,
ring5.avg as r5_avg
FROM
(SELECT id, lon, lat FROM sites) as site,
(SELECT avg(sales) FROM revenue WHERE ST_DWithin(geom::geography, ST_SetSRID(ST_MakePoint(site.lon, site.lat)::geography, 4326), (1.0*1609.34))) as ring1,
(SELECT avg(sales) FROM revenue WHERE ST_DWithin(geom::geography, ST_SetSRID(ST_MakePoint(site.lon, site.lat)::geography, 4326), (5.0*1609.34))) as ring5;
Yep, lo implícito/explícito de la sintaxis es la mala forma y el mal. Eso es lo que yo estoy luchando con: cómo conseguir el subconsultas para la recolección de la lat/long de la site
tabla y el uso para el WHERE
cálculo?