我们有房地产点X. 我们想要计算
中的站数0-200 m
200-400 m
400-600 m
在我有了这个后,我将在稍后创建一个新表,其中这些表根据数学表达式进行汇总。
SELECT loc_dist.id, loc_dist.namn1, grps.grp, count(*)
FROM (
SELECT b.id, b.namn1, ST_Distance_Sphere(b.geom, s.geom) AS dist
FROM stations s, bostader b) AS loc_dist
JOIN (
VALUES (1,200.), (2,400.), (3,600.)
) AS grps(grp, dist) ON loc_dist.dist < grps.dist
GROUP BY 1,2,3
ORDER BY 1,2,3;
我现在有这个,但是它需要永远运行并且不能得到任何结果,因为我有来自b和s的超过2000个条目,我想要来自特定b的s个数。但这计算所有,我如何添加:
WHERE b.id= 114477
例如?当我尝试这样做时,我只在连接上遇到语法错误,我只希望组距离为1或5个不同的b,具体取决于他们的b.id
答案 0 :(得分:0)
经过TA的大量帮助后,答案就在这里并且效果很好,添加了范围和BETWEEN子句以便在圆圈内计数
SELECT loc_dist.id, loc_dist.namn1, grps.grp, count(*)
FROM (
SELECT b.id, b.namn1, ST_Distance_Sphere(b.geom, s.geom) AS dist
FROM stations s, bostader b WHERE b.id=114477) AS loc_dist
JOIN (
VALUES (1,0,200), (2,200,400), (3,400,600)
) AS grps(grp, dist_l, dist_u) ON loc_dist.dist BETWEEN dist_l AND dist_u
GROUP BY 1,2,3
ORDER BY 1,2,3;