postgresql - 即使答案为 0,Postgis 也使用包含和计数

标签 postgresql postgis

我的计数函数有问题... 我想隔离位于 G10 多边形旁边的所有多边形,我想计算多边形(社区)中的点数(地铁站),但我想收到一个答案,即使该答案必须为 0。

我使用了以下语句:

select a2.name, count(m.geom) 
from arr a1, arr a2, metro m 
where n1.code='G10' 
and ((st_touches(a1.geom, a2.geom)) or
(st_overlaps(a1.geom, a2.geom))) 
and ST_Contains(a2.geom, s.geom)
group by a2.name, m.geom

我知道问题在于 where 子句的 和 ST_Contains(a2.geom, s.geom) 部分,但我现在不知道如何解决它!

最佳答案

使用显式LEFT JOIN:

SELECT  a1.name, COUNT(a2.code)
FROM    arr a1
LEFT JOIN
        arr a2
ON      ST_Intersects(a1.geom, a2.geom)
WHERE   a1.code = 'G10'

我不包括其他表,因为您在原始查询中有明显的拼写错误,并且不清楚它们应该如何连接

关于postgresql - 即使答案为 0,Postgis 也使用包含和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213466/

相关文章:

postgresql - Citus PostgresQL 需要注意哪些设置

sql - PostgreSQL:创建一系列唯一的数字供引用

postgresql - 选择按某些列排序但在另一列不同的行

postgresql - “PostgreSQL”组件在 Work Fusion RPA Express 中无法运行

python - 使用 psycopg2 在 python 中将多边形顶点转换为纬度/经度

postgresql - postgis 将点转换为多边形

postgresql - Keycloak可以存储在postgres中加密的用户数据吗

python - Django获取PointField的坐标值

graph - 如何使用 PostGIS 按交叉路口划分城市街道?

kml - Postgis 合并和线串顺序