甲骨文按空间相交分组?

时间:2019-03-08 15:11:36

标签: oracle group-by intersect oracle-spatial

我在160平方公里的面积上拥有大量的工作场所(+/- 200,000个),并且分布在大约20年的时间里。

我想为每个工作场所获得的是:
ID
相交的地方的ID
所有空间相交的工作台的Min_Start_Date日期
所有空间上相交的工作场所的Max_Start_Date

所以基本上我需要等价于“按交叉点分组”,有人知道如何解决吗?

工作场所 ID整数
StartDate日期
结束日期

Workplaces_GIS:
ID整数
形状SDOgeometru

Schema

1 个答案:

答案 0 :(得分:1)

如果您使用的是11g R2或更高版本,则可以使用以下查询:

SELECT  a.ID,
        listagg(b.ID, ',') within group (order by b.ID) as Intersect_ids,
        min(b.StartDate) as Min_Start_Date,
        max(b.EndDate) as Max_Start_Date
    FROM workplaces a, workplaces b
        WHERE a.ID != b.ID
        AND sdo_relate(a.geom, b.geom, 'mask = anyinteract') = 'TRUE'
        GROUP BY a.ID;