क्या ज्यामिति से समूह बनाना ठीक है?
हम बहुभुज ज्यामितीयों द्वारा बहुत सारे गिनती अंक करते हैं, जिसमें छात्रों के उदाहरणों को गिनने के लिए पहले डेटा को इंटरसेक्ट करना शामिल है। स्कूल सीमा, ब्लॉक समूह, आदि द्वारा:
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
लेकिन ऐसा लगता है कि आप ग्रुप बाय में भी ज्यामिति का उपयोग कर सकते हैं:
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
? आप सॉर्ट को व्यापक बना रहे हैं, जो रनटाइम को बढ़ाता है, संभवतः बाद के ज्वाइन से अधिक।