Apakah boleh mengelompokkan berdasarkan geometri?
Kami melakukan banyak penghitungan poin dengan geometri poligon, yang melibatkan memotong data terlebih dahulu untuk menghitung instance siswa. menurut batas sekolah, kelompok blok, dll:
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
Langkah kedua adalah membungkus sub-kueri untuk bergabung dengan geometri dari tabel poligon kembali ke kueri hitung:
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
Tapi sepertinya Anda juga bisa menggunakan geometri dalam 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
Apakah termasuk geometri dalam GROUP BY pendekatan yang benar?
GROUP BY
Anda? Bukankah itu bisa digabungkan dengan kunci uniknbhd_id
? Anda membuat semacam itu lebih luas, yang meningkatkan runtime, mungkin lebih dari sekadar gabungan berikutnya.