In Bezug auf Ihre „Bearbeitungen“ sehen Sie nicht oft eine Frage, die „bitte nicht angeben …“ enthält. Sicherlich hilft jedes bisschen? Zumal Sie uns noch nicht gezeigt haben, was Sie tun über STContains
Bescheid wissen oder STIntersects
(oder Filter()
übrigens)...
Wie auch immer, ich hatte eine Datenbank mit Postleitzahlen und Geschäftsstandorten zur Hand, also habe ich die Tabellen/Spalten umbenannt, damit sie mit Ihren übereinstimmen (ich habe dann 6.535 CrimeLocatoins und 3.285 GeoShapes). Ich nehme an, Sie haben es inzwischen herausgefunden - aber jemand anderes könnte es nützlich finden ...
Die folgende Abfrage gibt die Anzahl der CrimeLocations zurück in jedem 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
Es dauert Alter (wie 20 Minuten), weil ich keine Geodaten-Indizes eingerichtet habe und meine ShapeFiles eine hohe Punktzahl haben, aber es läuft erfolgreich. Wenn ich die Ergebnisse einschränken wollte, wie Sie vorschlagen:
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
Natürlich möchten Sie die Zahl 500 nicht fest codieren - Sie könnten also einen COUNT(*) FROM CrimeLocations
hinzufügen Unterabfrage dort, oder eine Variable mit der Summe aus einer separaten Abfrage.
Ist das komplex genug?