SQLには、SQL問合せの結果を集計するために使用される、集計ファンクションが存在します。次の例では、SUM集計ファンクションを使用して、部門ごとの従業員の給与を集計します。
SELECT SUM(salary), dept FROM employees GROUP BY dept;
空間集計ファンクションでは、ジオメトリ・オブジェクトを伴うSQL問合せの結果を集計できます。空間集計ファンクションでは、SDO_GEOMETRY型のジオメトリ・オブジェクトが戻されます。たとえば、(「空間データの挿入、索引付けおよび問合せの例」の定義およびデータを使用して)次の文を実行すると、表内に存在するすべてのジオメトリの最小境界矩形が戻されます。
SELECT SDO_AGGR_MBR(shape) FROM cola_markets;
次の例では、cola_d
を除くすべてのジオメトリの和集合が戻されます。
SELECT SDO_AGGR_UNION(SDOAGGRTYPE(c.shape, 0.005)) FROM cola_markets c WHERE c.name <> 'cola_d';
空間集計ファンクションのリファレンス情報および使用例については、「空間集計ファンクション」を参照してください。
注意:
2次元と3次元の両方のジオメトリでサポートされているSDO_AGGR_MBR以外の空間集計ファンクションは、2次元ジオメトリでのみサポートされています。
多くの空間集計ファンクションは、SDOAGGRTYPE型の入力パラメータを受け入れます。Oracle Spatial and Graphでは、SDOAGGRTYPEオブジェクト型を次のとおり定義します。
CREATE TYPE sdoaggrtype AS OBJECT ( geometry SDO_GEOMETRY, tolerance NUMBER);
注意:
SDOAGGRTYPEを表内の列のデータ型として使用しないでください。この型は、空間集計ファンクションへのコールにのみ使用してください。
SDOAGGRTYPE定義のtolerance
値は、特定の理由がないかぎり、ジオメトリのxxx_SDO_GEOM_METADATAビューのDIMINFO列に指定されたSDO_TOLERANCE値と同じである必要があります。許容差の詳細は、「許容差」を参照してください。xxx_SDO_GEOM_METADATAビューの詳細は、「ジオメトリのメタデータ・ビュー」を参照してください。
SDOAGGRTYPE定義のtolerance
の値は、空間集計ファンクションの結果に影響する可能性があります。図1-8に、2つの異なるtoleranceの値(ジオメトリ間の距離より小さい値と大きい値)を使用した、2つのジオメトリの空間集計和集合(SDO_AGGR_UNION)操作を示します。
図1-8の最初の集計和集合操作では、toleranceが矩形間の距離より小さく、結果は2つの矩形で構成された複合ジオメトリになります。2つ目の集計和集合操作では、toleranceが矩形間の距離より大きく、結果は単一のジオメトリになります。