Чи добре згрупуватися за геометрією?
Ми робимо багато підрахунків точок за геометрією багатокутника, що передбачає перетин даних спочатку, щоб підрахувати екземпляри учнів. за межами школи, блокової групи тощо:
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
Другий крок - загортання в підзапит, щоб приєднати геометрію від таблиці багатокутника назад до запиту підрахунку:
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
Але, здається, ви також можете використовувати геометрію в групі 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?
GROUP BY
вас? Хіба це не можна приєднати за допомогою унікального ключаnbhd_id
? Ви робите сортування ширшим, що збільшує час виконання, можливо, більш ніж наступним з'єднанням.