ตกลงกับเรขาคณิตหรือไม่?
เราทำการนับจำนวนจุดด้วยรูปหลายเหลี่ยมซึ่งเกี่ยวข้องกับการตัดข้อมูลก่อนเพื่อนับอินสแตนซ์ของนักเรียน โดยขอบเขตโรงเรียนกลุ่มบล็อก ฯลฯ :
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 เป็นวิธีที่ถูกต้องหรือไม่?
GROUP BY
ได้รับคุณ? มันไม่สามารถเข้าร่วมได้ด้วยกุญแจที่เป็นเอกลักษณ์nbhd_id
หรือ? คุณกำลังจัดเรียงให้กว้างขึ้นซึ่งจะเพิ่มเวลาใช้งานซึ่งอาจมากกว่าการเข้าร่วมครั้งต่อไป