PostgreSQL / Пример PostGIS с двойным вычислением:
select a.gid, b.gid, st_area(st_intersection(a.geom, b.geom)) from a_polygons a, b_polygons b
where st_intersects(a.geom, b.geom) and st_area(st_intersection(a.geom, b.geom)) > 10;
Есть ли какой-нибудь простой способ в таких случаях избежать двойного (множественного) вычисления одного и того же значения?
Я знаю Я мог бы добиться этого следующим образом:
with i_poly as (select a.gid a_gid, b.gid b_gid, st_area(st_intersection(a.geom, b.geom)) i_area
from a_polygons a, b_polygons b where st_intersects(a.geom, b.geom))
select a_gid, b_gid, i_area from i_poly where i_area > 10;
Есть ли какой-нибудь простой способ добиться этого без подзапросов et c.? Что-то простое, как:
select i_area from a_polygons a, b_polygons b where st_area(st_intersection(a.geom, b.geom)) as i_area > 10;