ジオメトリでグループ化しても大丈夫ですか?
ポリゴンジオメトリで多くのポイントをカウントします。これには、学生のインスタンスをカウントするために最初にデータを交差させることが含まれます。学校の境界、ブロックグループなど:
SELECT
n.nbhd_id
, count(*) AS count_burglaries
FROM denver.crime AS c
JOIN denver.neighborhoods AS n
ON ST_Intersects(c.geom, n.geom)
WHERE c.offense_ty LIKE 'BURG%'
GROUP BY n.nbhd_id
2番目のステップは、ポリゴンテーブルからジオメトリをカウントクエリに結合するために、サブクエリをラップすることです。
SELECT
count.*
, n.nbhd_name
, n.geom
FROM (
SELECT
n.nbhd_id
, count(*) AS count_burglaries
FROM denver.crime AS c
JOIN denver.neighborhoods AS n
ON ST_Intersects(c.geom, n.geom)
WHERE c.offense_ty LIKE 'BURG%'
GROUP BY n.nbhd_id
) AS count
JOIN denver.neighborhoods AS n
ON count.nbhd_id = n.nbhd_id
ただし、GROUP BYでジオメトリを使用することもできます。
SELECT
n.nbhd_id
, n.nbhd_name
, n.geom
, count(*) AS count_burglaries
FROM denver.crime AS c
JOIN denver.neighborhoods AS n
ON ST_Intersects(c.geom, n.geom)
WHERE c.offense_ty LIKE 'BURG%'
GROUP BY n.nbhd_id, nbhd_name, n.geom
GROUP BYにジオメトリを含めることは正しいアプローチですか?
nbhd_idで結合するサブクエリとしてカウントクエリをラップする必要はありません-ランタイムをジオメトリごとにグループ化する場合、これをしない理由として考えられますか?
—
DPSSpatial
GROUP BY
得られますか?の一意のキーで結合できませんnbhd_id
か?ソートの幅を広げているため、おそらく後続の結合以上に実行時間が長くなります。