É possível agrupar por geometria?
Fazemos muitos pontos de contagem por geometrias de polígonos, o que envolve a interseção dos dados primeiro para contar instâncias de alunos. por limite de escola, grupo de blocos, 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
A segunda etapa é agrupar uma subconsulta para associar a geometria da tabela de polígonos de volta à consulta de contagem:
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
Mas parece que você também pode usar a geometria no 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
A inclusão da geometria no GROUP BY é uma abordagem correta?
GROUP BY
você ganha? Não é possível unir por uma chave exclusiva denbhd_id
? Você está ampliando a classificação, o que aumenta o tempo de execução, possivelmente em mais de uma associação subsequente.