计算不同范围内的点数SQL

时间:2018-05-09 13:14:10

标签: sql range qgis

我们有房地产点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

1 个答案:

答案 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;