När det gäller dina "redigeringar" är det inte ofta du ser en fråga som innehåller "vänligen ange inte...". Visst hjälper varje liten bit? Särskilt eftersom du faktiskt inte har visat oss vad du gör känna till STContains
eller STIntersects
(eller Filter()
för den delen)...
Hur som helst, jag hade en databas med postnummer och butiksplatser till hands, så jag döpte om tabellerna/kolumnerna för att matcha dina (jag har då 6 535 CrimeLocatoins och 3 285 GeoShapes). Jag antar att du har listat ut det nu - men någon annan kanske tycker att det här är användbart...
Följande fråga returnerar antalet CrimeLocations i varje 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
Det tar åldrar (som 20 minuter) eftersom jag inte har ställt in några geospatiala index och mina ShapeFiles har ett högt antal poäng, men det körs framgångsrikt. Om jag vill begränsa resultaten som du föreslår:
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
Naturligtvis vill du inte hårdkoda numret 500 - så du kan lägga till en COUNT(*) FROM CrimeLocations
underfråga där, eller en variabel med summan från en separat fråga.
Är det tillräckligt komplicerat?