지오메트리별로 그룹화해도 괜찮습니까?
우리는 학생들의 실사를 계산하기 위해 데이터를 먼저 교차시키는 다각형 기하학으로 많은 계산 포인트를 수행합니다. 학교 경계, 블록 그룹 등으로 :
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
그러나 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
GROUP BY에 형상을 포함시키는 것이 올바른 방법입니까?
nbhd_id에서 조인하기 위해 카운트 쿼리를 하위 쿼리로 래핑 할 필요가 없습니다. 지오메트리별로 그룹화하기 위해 런타임을 늘리면이를 수행하지 않을 수 있습니다. 그렇지 않습니까?
—
DPSSpatial
GROUP BY
을 얻는가? 고유 키로 가입 할 수nbhd_id
없습니까? 정렬 범위를 넓히면 후속 조인보다 런타임이 늘어날 수 있습니다.