sql >> データベース >  >> RDS >> Sqlserver

Sql 2008 クエリの問題 - 地理ポリゴンに存在する LatLong はどれですか?

    あなたの「編集」に関して、「提供しないでください...」を含む質問を目にすることはあまりありません。きっと少しずつ役に立ちますか?特に、あなたが実際に何をしているかを見せていないので STContains について知っている または STIntersects (または Filter() さらに言えば)...

    とにかく、私は郵便番号と店舗の場所のデータベースを手元に持っていたので、テーブル/列の名前をあなたの名前に合わせて変更しました (6,535 の CrimeLocatoins と 3,285 の GeoShapes があります)。もうお分かりだと思いますが、他の誰かがこれを役に立つと思うかもしれません...

    次のクエリは、CrimeLocations の数を返します 各 GeoShapes.ShapeFile

    SELECT G.Name, COUNT(CL.Id)FROM GeoShapes GINNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) =1GROUP BY G.NameORDER BY 2 DESC  

    かかります (20 分程度) 地理空間インデックスを設定しておらず、ShapeFile のポイント数が多いため、正常に実行されます。あなたが提案するように結果を制限したい場合:

    SELECT G.Name, COUNT(CL.Id)FROM GeoShapes GINNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) =1GROUP BY G.NameHAVING COUNT(CL.Id) =500  

    もちろん、500 という数字をハードコーディングしたくないので、COUNT(*) FROM CrimeLocations を追加できます。 そこのサブクエリ、または別のクエリからの合計を含む変数。

    それは十分に複雑ですか?




    1. psqlの致命的な役割は存在しません

    2. SQLAlchemyとマルチプロセッシングを使用してPythonスクリプトでハングアップ

    3. 主キーの更新と主キーの削除+挿入

    4. mySQL-フィルタリングされた行のページネーション