Mengenai 'editan' Anda, tidak sering Anda melihat pertanyaan yang menyertakan "tolong jangan berikan...". Tentunya setiap sedikit membantu? Terutama karena Anda belum benar-benar menunjukkan kepada kami apa yang Anda lakukan tahu tentang STContains
atau STIntersects
(atau Filter()
dalam hal ini)...
Bagaimanapun, saya memiliki database kode pos dan lokasi penyimpanan yang berguna, jadi saya mengganti nama tabel/kolom agar sesuai dengan milik Anda (saya kemudian memiliki 6.535 CrimeLocatoins dan 3.285 GeoShapes). Saya kira Anda sudah mengetahuinya sekarang - tetapi orang lain mungkin menganggap ini berguna...
Kueri berikut mengembalikan jumlah CrimeLocations di setiap 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
Dibutuhkan usia (seperti 20 menit) karena saya belum mengatur indeks geospasial dan ShapeFiles saya memiliki jumlah poin yang tinggi, tetapi berhasil berjalan. Jika saya ingin membatasi hasil seperti yang Anda sarankan:
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
Tentu saja Anda tidak ingin membuat hardcode nomor 500 - sehingga Anda dapat menambahkan COUNT(*) FROM CrimeLocations
subquery di sana, atau variabel dengan total dari kueri terpisah.
Apakah itu cukup rumit?