आपके 'संपादन' के संबंध में, अक्सर आपको ऐसा प्रश्न नहीं दिखाई देता है जिसमें "कृपया प्रदान न करें..." शामिल हो। निश्चित रूप से हर छोटी मदद करता है? खासकर जब से आपने वास्तव में हमें यह नहीं दिखाया है कि आप करते हैं STContains
. के बारे में जानें या STIntersects
(या Filter()
उस बात के लिए)...
वैसे भी, मेरे पास ज़िपकोड और स्टोरलोकेशन का एक डेटाबेस था, इसलिए मैंने आपका मिलान करने के लिए टेबल/कॉलम का नाम बदल दिया (मेरे पास तब 6,535 क्राइमलोकैटोइन्स और 3,285 जियोशैप्स हैं)। मुझे लगता है कि आपने अब तक इसका पता लगा लिया है - लेकिन किसी और को यह उपयोगी लग सकता है...
निम्न क्वेरी अपराध स्थानों . की संख्या लौटाती है प्रत्येक GeoShapes.ShapeFile . में
SELECT G.Name, COUNT(CL.Id)
FROM GeoShapes G
INNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) = 1
GROUP BY G.Name
ORDER BY 2 DESC
इसमें उम्र लगते हैं (जैसे 20 मिनट) क्योंकि मैंने कोई भू-स्थानिक अनुक्रमणिका स्थापित नहीं की है और मेरी शेपफाइल्स की उच्च बिंदु-गणना है, लेकिन यह सफलतापूर्वक चलती है। अगर मैं आपके सुझाव के अनुसार परिणामों को प्रतिबंधित करना चाहता हूं:
SELECT G.Name, COUNT(CL.Id)
FROM GeoShapes G
INNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) = 1
GROUP BY G.Name
HAVING COUNT(CL.Id) = 500
बेशक आप 500 नंबर को हार्डकोड नहीं करना चाहते हैं - इसलिए आप एक COUNT(*) FROM CrimeLocations
जोड़ सकते हैं वहाँ सबक्वेरी, या एक अलग क्वेरी से कुल के साथ एक चर।
क्या यह काफी जटिल है?