Geometriye göre gruplamak uygun mudur?
Öğrencilerin örneklerini saymak için önce verilerin kesişmesini içeren çokgen geometrileri ile çok sayıda sayım noktası yapıyoruz. okul sınırı, blok grubu vb.
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
İkinci adım, geometriyi çokgen tablosundan sayım sorgusuna geri birleştirmek için bir alt sorguyu sarmaktır:
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
Ama görünüşe göre GROUP BY'da geometriyi de kullanabilirsiniz:
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'a geometri eklemek doğru bir yaklaşım mıdır?
GROUP BY
Size ne kazandırır? Eşsiz bir anahtarla birleştirilemeznbhd_id
mi? Sıralamayı genişletiyorsunuz, bu da çalışma zamanını, muhtemelen bir sonraki birleşmeden daha fazla artırıyor.