¿Está bien agrupar por geometría?
Hacemos muchos puntos de recuento por geometrías de polígonos, lo que implica la intersección de los datos primero para contar instancias de estudiantes. por límite escolar, grupo de bloques, etc.
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
El segundo paso es ajustar una subconsulta para unir la geometría de la tabla de polígonos a la consulta de recuento:
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
Pero parece que también puedes usar geometría en 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
¿Incluir geometría en GROUP BY es un enfoque correcto?
GROUP BY
te gana? ¿No se puede unir con una clave única denbhd_id
? Está ampliando el orden, lo que aumenta el tiempo de ejecución, posiblemente en más de una unión posterior.