首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算平均距离w/极限的子查询

计算平均距离w/极限的子查询
EN

Stack Overflow用户
提问于 2014-09-16 12:36:33
回答 2查看 130关注 0票数 0

我有一个选择过程,它依赖于创建两个中间表。我需要帮助重写代码来使用子查询而不是中间表。

我真的不理解子查询,而且我尝试过的每个查询都会返回一个错误。

这段代码提供了我想要的结果,但依赖于创建中间表:

代码语言:javascript
复制
Select modded_vgi_ptsutm.pplx,ST_Distance(modded_vgi_ptsutm.geom,split_polygons.geom) as dist into intermediate from modded_vgi_ptsutm,split_polygons where split_polygons.objectid = 87 order by dist as limit 10;

Select pplx,count(pplx) as count,avg(dist) as dist into intermediate2 from intermediate group by pplx order by dist asc;

Select pplx,dist from intermediate2 where count > 1; 

注意:我在这里发布了这个,而不是gis页面,因为我认为我的问题更多的是sql而不是gis。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-16 12:39:36

您应该能够使用子查询来组合这些:

代码语言:javascript
复制
Select pplx, avg(dist) as dist
into intermediate2
from (Select modded_vgi_ptsutm.pplx, ST_Distance(modded_vgi_ptsutm.geom, split_polygons.geom) as dist
      from modded_vgi_ptsutm cross join
           split_polygons
      where split_polygons.objectid = 87
      order by dist
      limit 10
     ) t
group by pplx
having count(pplx) > 1
order by dist;

注意:在from子句中使用逗号是可疑的,因为它会导致笛卡尔乘积。我用一个显式的cross join替换了它。

票数 1
EN

Stack Overflow用户

发布于 2014-09-16 12:41:00

这应该能起作用:

代码语言:javascript
复制
SELECT pplx,dist FROM 
    (
    SELECT pplx,count(pplx) AS count,avg(dist) AS dist FROM 
        (
        SELECT modded_vgi_ptsutm.pplx,ST_Distance(modded_vgi_ptsutm.geom,split_polygons.geom) AS dist FROM 
        modded_vgi_ptsutm,split_polygons where split_polygons.objectid = 87 ORDER BY dist AS LIMIT 10
        ) 
    GROUP BY pplx ORDER BY dist asc
    ) 
WHERE count > 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25868952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档